[7/19] 게임 개발

이경준·2021년 7월 18일
0

코테

목록 보기
73/140
post-custom-banner

구현 (118)

내 코드

n, m = map(int, input().split())
a, b, d = map(int, input().split())
cnt = 1

arr = []
for _ in range(n):
    arr.append(list(map(int, input().split())))
    
x = a
y = b
arr[x][y] = -1

dire = [[-1, 0], [0, 1], [1, 0], [0, -1]]

while True:
    
    # 1단계 방향 전환
    if (d == 0):
        d = 3
    else:
        d -= 1   
    
    # 3단계
    if (arr[x][y-1] != 0 and arr[x+1][y] != 0 and arr[x][y+1] != 0 and arr[x-1][y] != 0):
        # 뒤로 한칸 후진 (바다가 아니라면)
        if ( arr[ x - dire[d][0] ][ y - dire[d][1] ] != 1 ):
            x -= dire[d][0]
            y -= dire[d][1]
            
        # 바다라면 멈춤
        else:
            break
    
    else:
        # 2단계, 확인하고 이동
        if (arr[ x + dire[d][0] ][ y + dire[d][1] ] == 0):
            x += dire[d][0]
            y += dire[d][1]
            cnt += 1
            arr [x][y] = -1
    
print(cnt)

로직

  • d에 방향에 따라 4가지 if문을 쓰지말고, arr을 통째로 회전시키면 어떨까 생각 ==> 불가
  • 맵 외곽이 바다로 되어있는데... 위치가 테두리로 이동하면 리스트 범위 밖이라고 뜬다
    ==> 입력 값에서 테두리 한겹을 추가해서 1(바다)로 두르면 좋을듯!

효율적인 코드

#생략

피드백

  • 방문한 것을 2차원 리스트로 따로 만들어 확인했다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글