문제
https://www.acmicpc.net/problem/3190
3190번: 뱀
'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임
www.acmicpc.net
내 풀이
뱀을 deque로 만들었다.
2차원 배열로 보드를 만들어서 구현하는 방법도 있지만, 나는 뱀, 사과 위치를 담은 리스트, 방향 변환 명령을 담은 리스트를 가지고 구현을 하였다.
뱀의 꼬리가 잘리는 것을 deque의 맨 앞의 원소를 빼내는 것으로 구현하였다.
from collections import deque
N = int(input())
K = int(input())
apple = []
for i in range(K):
r, c = map(int, input().split())
apple.append((r-1, c-1))
change = []
L = int(input())
for i in range(L):
X, C = input().split()
change.append((int(X), C))
dx, dy = [0, 1, 0, -1], [1, 0, -1, 0]
dq = deque()
dir, time = 0, 0
X, C = None, None
dq.append((0, 0))
if change:
X, C = change.pop(0)
while True:
x, y = dq[-1]
nx, ny = x+dx[dir], y+dy[dir]
if nx < 0 or N <= nx or ny < 0 or N <= ny: break
if (nx, ny) in dq: break
dq.append((nx, ny))
if (nx, ny) in apple:
apple.remove((nx, ny))
else:
dq.popleft()
time += 1
if time == X:
if C == 'L': dir = (dir-1)%4
else: dir = (dir+1)%4
if change: X, C = change.pop(0)
print(time+1)
총평
변수명 헷갈리지 않게 잘 짓자.
변수명 중복때문에 어디서 틀렸는지 몰라서 좀 헤맸다.
오늘부터 난 '덜렁이'다.
'알고리즘 > 삼성 기출' 카테고리의 다른 글
퇴사 [백준 14501번] (0) | 2022.09.22 |
---|---|
테트로미노 [백준 14500번] (0) | 2022.09.19 |
로봇 청소기 [백준 14503번] (1) | 2022.09.16 |
연구소 [백준 14502번] (0) | 2022.08.29 |
주사위 굴리기 [백준 14499번] (0) | 2022.08.27 |