게임개발

quokka·2021년 2월 27일
0

책 '이것이 취업을 위한 코딩 테스트다.'에 수록되어있는 문제입니다.

  1. turnTime으로 4번까지 체크하는거
  2. 전진,후진 하기전 상태 어떤지 확인하기
  3. d(0,1,2,3)에 따라 dx,dy배열 활용
def turnLeft(tmp):
    if tmp==0:
        tmp=3
    elif tmp==3:
        tmp=2
    elif tmp==2:
        tmp=1
    elif tmp==1:
        tmp=0
    return tmp

n,m = map(int,input().split())
x,y,d= map(int,input().split())
# 0북,1동,2남,3서 0->3->2->1->0
dx = [0,1,0,-1]
dy = [-1,0,1,0]

matrix = [[0] * m for _ in range(n)]
for i in range(n):
    matrix[i]=list(map(int,input().split()))
matrix[y][x]=2
count=1
turnTime=0

while True:
    d = turnLeft(d)
    nx = x+dx[d]
    ny = y+dy[d]
    if matrix[ny][nx]==0: #전진하기
        matrix[ny][nx]=2
        turnTime=0
        count+=1
        x=nx
        y=ny
    else:
        turnTime+=1
    if turnTime==4: #뒤로가기
        nx = x-dx[d]
        ny = y-dy[d]
        if matrix[ny][nx]==2:
            x=nx
            y=ny
        else:
            break
        turnTime=0
print(count)
profile
iOS를 공부하는 개발자입니다~ㅎㅎ

0개의 댓글