사과의 위치와 뱀의 이동경로가 주어졌을 때 게임이 몇 초후에 끝나는지 구하기
- n : 가로, 세로 맵의 크기
- k : 사과의 갯수
- kArr : 사과의 위치가 담긴 배열
- l : 뱀의 방향전환 정보 갯수
- lArr : x 초후에 c 방향으로 반환 전환하는 정보가 담긴 배열
- 뱀의 이동 경로를 저장하기 위한 visited 배열을 생성한다 (1)
- visited 배열에 사과의 위치를 기록한다 (2)
- 방향전환을 위한 directions 배열을 선언한다 (반시계방향)
- 시작은 오른쪽 이동(0,1)
- L은 왼쪽 방향이고 direction에서 인덱스로 +1 이동한 좌표 (반시계)
- D는 오른쪽 방향이고 direction에서 인덱스로 +3 이동한 좌표 (시계)
- 앞뒤로 데이터를 추가/제거 할 수 있는 dequeue 처럼 사용할 배열을 선언한다 (초기값 [0, 0])
- dequeue가 있으면 반복한다
- 걸리는 시간을 기록한다
- dequeue에서 뱀의 머리 좌표를 읽는다
- 뱀의 새 머리 좌표를 구한다
- 새 머리 좌표가 몸통이거나 범위를 벗어나면 반복문을 종료한다
- 새 머리 좌표에 사과가 있으면 먹고(0으로 변경) 없으면 dequeue에서 꼬리를 제거한다음 visited에서 미방문 처리한다
- 새 머리 좌표를 visitied 배열에 기록하고 dequeue 배열의 앞에 추가한다
- 기록한 시간이 방향전환 배열에 있는 시간에 도달하면 방향을 전환한다
- 총 걸린 시간을 반환
- 사과가 없으면 미방문 처리 하는 부분에서 dequeue에서 꼬리 좌표를 꺼내야하는데
visited[y][x] = 0
으로 이전 머리의 위치를 미방문 처리 해서 몸통이 제대로 기록되지 않았음 (5-5) - 입력값에서 사과의 좌표가 (0, 0)이 (1, 1)로 주어지는것을 인지하지 못해서 잘못된 사과 좌표를 기록함 (2)