캐릭터는 (0,0)에서 시작한다. U,L,D,R 방향어에따라 1칸 씩 이동하며 -5<x<5 그리고 -5<y<5 범위를 벗어날 수 없다. 이때, 캐릭터가 처음 지나가 본 거리에대해서 반환한다.
def solution(dirs):
#오왼 위 아래
dx = [1,-1,0,0]
dy = [0,0,1,-1]
answer = 0
DIR = {"U": 2, "D": 3, "R": 0, "L": 1}
x,y = 0,0
visited = set()
for d in dirs:
#딕셔너리에서 방향에따른 좌표이동을 꺼내서 way 변수에 저장
way = DIR[d]
#nx = next x 좌표, ny = next y 좌표
nx, ny = x + dx[way], y + dy[way]
if nx> 5 or nx<-5 or ny>5 or ny<-5:
continue
if (x,y, nx, ny) not in visited:
visited.add((x,y,nx,ny))
visited.add((nx,ny,x,y))
answer +=1
x = nx
y = ny
#print(answer)
return answer
📌 고려해야할 점
visited.add((x,y,nx,ny))
visited.add((nx,ny,x,y))
처음 문제 풀이 시에 visited.add((nx,ny,x,y))
를 놓쳤다. 처음 방문해 본 길에대해서만 고려하기 때문에 양방향으로 모두 visitied에 저장해주어야한다. 이 부분을 놓쳐 바로 정답을 맞출 수 없었다.