본문 바로가기
코딩 테스트/구현

게임 개발

by hazel_ 2021. 1. 19.

p.119

N,M=map(int, input().split()) # N x M의 칸
A,B,direction=map(int, input().split()) # (A,B) 좌표, d 방향

d=[[0]*M for _ in range(N)]
d[A][B]=1

table=[]
for i in range(N):
  table.append(list(map(int, input().split()))) # 0 육지, 1 바다

dA=[-1, 0, 1, 0]
dB=[0, 1, 0, -1]

# 왼쪽으로 회전
def turn_left():
  global direction
  direction -= 1
  if direction==-1:
    direction=3


#시뮬레이션 시작
count=1 # 방문한 칸의 갯수
turn_time=0
while True:
  turn_left()
  nA=A+dA[direction]
  nB=B+dB[direction]

  if d[nA][nB]==0 and table[nA][nB]==0: #가보지 않았고, 육지인 경우
    d[nA][nB]=1
    A=nA
    B=nB
    count+=1
    turn_time=0
    continue
  else:
    turn_time+=1
  
  if turn_time==4: # 네 방향 모두 못가는 경우
    nA=A-dA[direction]
    nB=B-dB[direction]

    if table[nA][nB]==0:
      A=nA
      B=nB
    else:
      break
    turn_time=0
print(count)

'코딩 테스트 > 구현' 카테고리의 다른 글

  (0) 2021.01.19
자물쇠와 열쇠  (0) 2021.01.19
왕실의 나이트  (0) 2021.01.19
시각  (0) 2021.01.18
상하좌우  (0) 2021.01.18

댓글