728x90
반응형
문제 설명
1. 보드에 문자를 통해 x, y축 표를 입력받는다.
2. 말은 왼쪽 맨 위에 위치한다.
3. 말은 상, 하, 좌, 우로 움직일 수 있으며 한번 지나온 칸은 다시 지날 수 없다.
4. 말이 시작해서 최대로 움직일 수 있는 칸을 return하면 된다.
풀이 과정
1. 간단한 DFS문제이며, check할 때에 조금만 주의하면 된다.
2. 각 움직이는 DFS의 진행마다 check의 기준을 다르게 해 주면 될 것이다.
3. 즉, (위, 아래, 오른쪽, 왼쪽)을 1DFS라고 치면, 1DFS - 2DFS - 3DFS...마다 check를 판단하고 이전의 DFS로 돌아가면 해당 check를 초기화한다.
4. char로 구할 필요 없이 int로 판단하고, A~Z까지 모든 경우를 check에 넣고 판단하면 더 쉬울 것이다.
5. 알고리즘 진행 과정은 다음과 같다.
- 값의 입력을 진행한다.
- DFS는 말의 위치 기준으로 위, 아래, 좌, 우로 이동 가능한 경우 진행한다.
- 이미 지나온 위치인 경우 말이 그곳 이후로는 진행 불가능하니 해당 위치에서의 DFS를 멈추고 지금까지 움직인 거리를 return한다.
- 이미 지나오지 않은 경우 지나왔다는 표시를 알파뱃에 해 주고, DFS를 더 진행해 준다.
코드
반응형
'알고리즘 공부' 카테고리의 다른 글
[프로그래머스] 체육복 - java (0) | 2021.05.02 |
---|---|
[프로그래머스] 모의고사 - java (0) | 2021.05.02 |
[백준 2607번] 비슷한 단어 - java (2) | 2021.05.01 |
[프로그래머스] 완주하기 못한 선수 - java (0) | 2021.05.01 |
[프로그래머스] 두 개 뽑아서 더하기 - java (0) | 2021.05.01 |