게임 개발

최대 1 분 소요

해결방법

전형적인 시뮬레이션 문제이다.

문제해결을 위해서 북: 0,동: 1,남: 2,서: 3 각 방향을 리스트에 index로 생각해서

x축 이동 리스트 [-1,0,1,0], y축 이동 리스트 [0,1,0,-1]를 먼저 두었다.

방향은 반시계 방향으로 확인하는 일이 반복적으로 일어나기 때문에 함수로 구현했다.

캐릭터가 방문한 좌표를 set으로 삽입하고 결과적으로 set의 길이를 출력하도록 했다.

시작점부터 현재 이동방향이 바다면 count를 증가시켜가며 4방향이 모두 갈 수 없다면 while문을 탈출하는 방법으로 구현하였다.

n, m = map(int, input().split())
x, y, d = map(int, input().split())

game = []
for i in range(n):
    game.append(list(map(int, input().split())))

def make_direction(d):
    if d == 0:
        return 3
    else:
        return d-1
    
# 북 동 남 서
dx = [-1,0,1,0]
dy = [0,1,0,-1]

visit = set()
visit.add((x,y))
count = 0
while True:
    # print(x,y, count)
    if count == 4:
        break
    d = make_direction(d)
    mx = x + dx[d]
    my = y + dy[d]
    if 0<mx<n and 0<my<m:
        if game[mx][my] == 1:
            count += 1
        else:
            if (mx,my) not in visit:
                x, y = mx, my
                visit.add((x,y))
                count = 0
            else:
                count += 1

print(len(visit))
# print(visit)

댓글남기기