Skip to content

Conversation

@ak2j38
Copy link
Member

@ak2j38 ak2j38 commented May 3, 2022

안녕하세요 아더입니다~!

이번 문제는 DFS로 접근했습니다.
푸쉬하고 보니까 RobotCleaner객체를 괜히 만들었네요;;;;

시간복잡도

O(V^2)로 예상됩니다!

접근 과정

전체적인 DFS 메소드의 흐름은 다음과 같습니다

  1. 벽이면 리턴, 벽이 아니라면 방문체크하고 청소구역 카운트 증가
  2. 4방향 탐색
  3. 현재 바라보는 방향의 왼쪽 방향 계산
  4. 새로운 row, column 값 계산
  5. 유효한 범위인지 판단
  6. 벽인지 판단
  7. 방문했었는지 판단
  8. 모두 통과한다면 새로운 좌표로 dfs 시도
  9. 4방향 모두 탐색했다면 한 칸 뒤로 후진해 다시 dfs

추가) 현재 바라보는 방향의 왼쪽 방향 구하는 방법

0~3까지 차례로 북동남서 방향을 가리킵니다.
이 방향들의 왼쪽방향은 서북동남이며 이를 숫자로 나타내면 3012가 됩니다.
따라서 현재 위치를 d라고 한다면 d = (d+3) % 4라는 수식으로 왼쪽 방향을 구할 수 있습니다.

삽질 과정

  1. 1번의 벽이 아니라는 조건에서 그냥 else를 사용했는데 조건을 확실히 해줘야 했습니다.

이번 문제 해결도 고생많으셨습니다 여러분 👍

1. 로봇청소기 문제 풀이 추가

end
@ak2j38 ak2j38 added the BOJ label May 3, 2022
@ak2j38 ak2j38 self-assigned this May 3, 2022
@ak2j38 ak2j38 linked an issue May 7, 2022 that may be closed by this pull request
@jinan159 jinan159 merged commit b7375d7 into CodeSquad-Algorithm:main May 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2022.05.03(화)] BOJ(14503) : 로봇 청소기

2 participants