[핵심]
1. 뱀의 형태를 deque로 저장하기
처음에 True false 맵으로 뱀의 상태를 저장하려 했으나, 뱀의 움직임을 고려하는것이 매우 복잡했다.
FIFO 이러한 형태의 문제를 잘 기억할것
2. if 와 elif는 다르다.
if와 elif의 차이를 정확히 기억하자(이것때매 오류 발생)
-다시 검토하고 싶을 땐 if 두번
-다시 검토 아닐때 if , eilf
3. time을 언제줄지도 중요!
from collections import deque
num = int(input())
map1 = [[0 for i in range(num)] for j in range(num)]
gogo = deque()
capple = int(input()) # 사과의 수
#dchange = [] # 사과 저장
for i in range(capple): #맵 저장
x,y = map(int,input().split())
map1[x-1][y-1] = 1
dchange = int(input()) #방향 수
change =[] # 방향 저장
for i in range(dchange): #방향 저장
tt = list(map(str,input().split()))
change.append(tt)
times =[] # 시간만 따로 저장
for j in change:
times.append(int(j[0]))
gogo.append([0,0])
dir = "right"
xx=0
yy=0
time =0
len =1
tem =""
while True:
if time in times:
for _ in change:
if time == int(_[0]):
tem = _[1]
else:
tem =""
if dir =="right" and tem == "D":
dir = "down"
elif dir =="right" and tem =="L":
dir = "up"
elif dir =="down" and tem == "D":
dir = "left"
elif dir =="down" and tem =="L":
dir = "right"
elif dir =="left" and tem == "D":
dir = "up"
elif dir =="left" and tem =="L":
dir = "down"
elif dir =="up" and tem == "D":
dir = "right"
elif dir =="up" and tem =="L":
dir = "left"
time += 1
if dir == "right":
if yy+1 < 0 or yy+1 >= num or [xx,yy+1] in gogo:
break
if map1[xx][yy+1] == 1:
map1[xx][yy + 1] = 0
gogo.append([xx,yy+1])
len+=1
yy += 1
else:
gogo.popleft()
gogo.append([xx,yy+1])
yy += 1
elif dir =="down":
if xx+1 < 0 or xx+1 >= num or [xx+1,yy] in gogo:
break
if map1[xx+1][yy] == 1:
map1[xx + 1][yy] = 0
gogo.append([xx+1,yy])
len+=1
xx +=1
else:
gogo.popleft()
gogo.append([xx+1,yy])
xx +=1
elif dir =="left":
if yy-1 < 0 or yy-1 >= num or [xx,yy-1] in gogo:
break
if map1[xx][yy-1] == 1:
map1[xx][yy - 1] = 0
gogo.append([xx,yy-1])
len+=1
yy -=1
else:
gogo.popleft()
gogo.append([xx,yy-1])
yy -=1
elif dir =="up":
if xx-1 < 0 or xx-1 >= num or [xx-1,yy] in gogo:
break
if map1[xx-1][yy] == 1:
map1[xx - 1][yy] = 0
gogo.append([xx-1,yy])
len +=1
xx -=1
else:
gogo.popleft()
gogo.append([xx-1,yy])
xx -=1
print(time)
'Data Science > 삼성 SW역량테스트 기출 (백준 문제집)' 카테고리의 다른 글
[SW테스트 기출][파이썬] 13458 시험감독 (0) | 2020.05.02 |
---|---|
[SW 역량테스트 기출][파이썬] 14499번 주사위 굴리기 (0) | 2020.05.02 |
댓글