https://www.acmicpc.net/problem/3190

 

3190번: 뱀

 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임

www.acmicpc.net

문제에 주어진대로 구현하면 되는 구현 문제다. 시간 흐름에 따른 뱀의 방향 전환을 어떻게 구현할지 고민했다.

 

풀이

2차원 배열에 뱀은 "S", 사과는 "A"로 표시하여 구분을 지었다. 뱀이 지도에서 어느 좌표 위에 있는지를 또 다른 배열에 담아 두고, 뱀의 머리가 "S"또는 지도의 범위를 빠져나간다면 게임을 종료시키는 것으로 구현하였다. 

방향 이동의 경우 4가지 방향을 정해놓은 x배열 y배열을 생성한 뒤, 최대 시간이 10,000이기에 시간을 표현하는 10,000 크기 배열을 생성하여 입력받은 시간 인덱스에 각 회전을 하기 위한 방향 정보를 담아두어 매 반복문(시간)마다 방향을 정해주었다.

뱀의 이동은 문제에 주어진대로 앞이 빈 공간이라면 뱀의 새로운 머리 좌표를 배열의 맨 앞에 추가한 뒤, 배열의 마지막인 꼬리 좌표를 removelast()를 통해 이동을 처리하였다. 사과를 만났다면 꼬리 좌표는 그대로 두면 된다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[17250] 은하철도  (0) 2022.12.10
[18116] 로봇 조립  (0) 2022.12.09
[2580] 스도쿠  (1) 2022.12.07
[11559] Puyo Puyo  (0) 2022.12.05
[17070] 파이프 옮기기 1  (8) 2022.12.01

+ Recent posts