(게임 개발)

—————————————
( 접근하다 )
과제에서 말하는 대로 문자 그대로 구현할 수 있다고 생각했습니다.
맵의 크기가 첫 번째 입력으로 주어지기 때문에 for 문으로 변환하여 2차원 목록이 있는 맵을 만들 수 있다고 생각했습니다.
맵을 만들고 나서 상황에 따라 캐릭터를 움직여도 괜찮을 것 같다는 생각이 들었습니다.
챕터는 구현 챕터이기 때문에 조건을 오류없이 잘 구현하는 것이 중요하다고 생각했습니다.
내가 고려해야 할 것은 두 개의 목록을 만들고 방문했는지 확인해야 하는지 또는 동일한 목록에 표시하기 위해 추가 변수를 추가해야 하는지 여부이지만 구현을 단순화하고 싶습니다(구현은 쉽지만 . 공간의 복잡함을 덜 고려한다.즉, 메모리 제약이 있다면 리스트를 사용하는 것이 맞다.) 우리는 2개의 카드 리스트를 선언했다.
——————
(작성된 코드)
n , m = map(int , input().split())
x , y, direction = map(int , input().split())
visited = ((0)*m for _ in range(n))
visited(x)(y) = 1
data=()
for _ in range(n):
data.append(list(map(int,input().split())))
dx = (-1, 0, 1, 0)
dy = ( 0, 1, 0,-1)
count = 1
while True:
direction = (direction-1) % len(dx)
nx = x+dx(direction)
ny = y+dy(direction)
if visited(nx)(ny) == 0 and data(nx)(ny) == 0:
x,y = nx,ny
visited(x)(y) = 1
count += 1
seek = False
for i in range(4):
if data(x+dx(i))(y+dy(i)) == 0 and visited(x+dx(i))(y+dy(i)) == 0:
seek = True
if seek == False:
nx = x-dx(direction)
ny = y-dy(direction)
if data(nx)(ny) == 1:
break
else:
x = nx
y = ny
print(count)
——————-
(올바른 응답 코드와 비교)
코드 자체는 크게 다르지 않았지만 올바른 응답 코드는 turn_left라는 함수를 통해 보는 방향을 변경했습니다.
그리고 나머지를 통해서 방향을 바꿔서 0에서 3 사이의 값을 구현한 반면, 정답 코드에서는 if문이 음수로 만들면 3까지 부딪혀서 0에서 3까지의 값이 발생한다. 나왔다