#13460. 구슬 탈출 2
Problem
Solution
- 시뮬레이션 문제이다.
- 어떤 방향으로 기울일지 정해야 한다. (모든 경우를 구해야 한다. - 재귀 사용)
이전 방향과 반대되는 방향으로 이동할 필요는 없다. - 맵을 갱신할 필요는 없고 구슬의 위치만 변경하면 된다.
- 각 경우마다 구슬의 위치를 다음 작업에 넘겨주어야 한다. (재귀 함수 인자로 넘기기)
- 기울이기 재귀함수빨간 구슬이 방향에 맞게 이동하고, 그 후 파란 구슬이 이동한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Move(이동 횟수, 이전 방향, 빨간 구슬 위치, 파란 구슬 위치)
if 이동 횟수 > 10 return
if 파란 구슬이 구멍에 들어간 경우 return
if 빨간 구슬만 구멍에 들어간 경우 최솟값 갱신 return
4 방향 이동
벽이 아닐 때까지, 구멍 일 때까지 이동
// 빨간 구슬 이동
// 파란 구슬 이동
이동이 끝나면
if 위치가 겹칠 때
if 구멍이면 Move(이동 횟수 + 1, 방향, 위치)
else
같은 행일 때
같은 열일 때
위치 이동
Move(이동횟수 +1, 방향, 위치)
else
Move(이동횟수 +1, 방향, 위치)
구멍에 들어갔거나 같은 행이거나 같은 열이면 위치가 같게 된다. 이때 방향과 처음 위치에 맞게 방향을 바꿔준다.
갱신이 끝났으면 재귀함수를 호출해준다.
1 Try
1 |
|
문제 풀고나서 찾아본 깔끔한 코드
1 |
|