접근 방법 : 구현
dictionary를 이용하여 불필요한 분기를 막음.
set을 이용하여 중복에 대한 처리.
문제의 핵심은 양방향이라 처리를 잘 해줘야 함.
단순할 줄 알았는데 생각보다 안풀렸다.
def solution(dirs):
answer = 0
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
dir_dict = {"U" : 0, "D" : 1, "L" : 2, "R" : 3}
visited = set()
cx = 0
cy = 0
for i in range(len(dirs)):
nx = cx + dx[dir_dict[dirs[i]]]
ny = cy + dy[dir_dict[dirs[i]]]
if -5 <= nx <= 5 and -5 <= ny <= 5:
# 양방향 처리
if (cx, cy, nx, ny) not in visited:
visited.add((cx, cy, nx, ny))
visited.add((nx, ny, cx, cy))
answer += 1
cx = nx
cy = ny
return answer