t_게임개발_118
| source | github.com/ndb796/python-for-coding-test |
| topics | |
| types | 문제풀이 |
문제
n * m 직사각형 , 육지 0 바다1
바다 갈수없음, 상하좌우 이동가능
- 반시계 90도
- 가본칸없음 > 전진, else 1
- 다갈수없음, 방향유지한채 뒤로한칸후 1번순서로이동
- 뒤에가 바다일시 stop
답
나는 여기서 check_valid라고 arr안에 존재하는지 제한을 주었다.
여기서는 근데 외각이 항상 바다로 되어있다고 햇으므로 필요있진않았지만 있는게좋을듯^.^
import sys
# y,x
ways = [[-1,0],[0,1],[1,0],[0,-1]]
# 0이 육지다 북동남서순
# 0 육지 1 바다 -1 가본곳
# 실제로 갈건 반시계방향 > -1씩해야함
# 캐릭터가 방문한 칸수
col,row = map(int, sys.stdin.readline().split())
ny, nx, nway = map(int, sys.stdin.readline().split())
arr =[]
for c in range(col):
arr.append(list(map(int, sys.stdin.readline().split())))
def check_valid(y,x):
return x >-1 and y > -1 and x<row and y < col
arr[ny][nx] = -1
cnt = 1
miss = 0
while True:
print(ny,nx,nway,miss,cnt)
nway -= 1
if nway<0:
nway += 4
tmpy = ny + ways[nway][0]
tmpx = nx + ways[nway][1]
if check_valid(tmpy,tmpx):
if arr[tmpy][tmpx] == 0:
arr[tmpy][tmpx] = -1
ny = tmpy
nx = tmpx
miss = 0
cnt +=1
continue
miss +=1
if miss > 3:
# 바라본 방향을 유지한 채 뒤로간다.
ny -= ways[nway][0]
nx -= ways[nway][1]
if check_valid(ny,nx):
if arr[ny][nx] != 1:
miss = 0
continue
break
print(cnt)