알고리즘 공부

[백준 1987번] 알파벳 - java

철매존 2021. 5. 2. 16:08
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를 더 진행해 준다.

 

 

 

코드

반응형