이 문제는 처음에 0으로 초기화된 11x11 배열을 만들어서 지나온 점을 1로 만드는 방식으로 풀었는데 문제가 되는 점이, 지나온 점을 또 못가는게 아니라 지나온 길 즉 선이 중복되면 안되는 거였다.
방법은 집합을 사용하고 (출발, 도착), (도착, 출발)
을 넣으면 된다. 출발 도착이건 도착 출발이건 똑같은 길을 지난것이므로 마지막에 집합의 길이에서 2로 나누면 된다.
그리고 좌표를 이용하면 된다!
def solution(dirs):
move = {'U': [0,1], 'D': [0,-1], 'L': [-1,0], 'R': [1,0]}
road = set()
x, y = 0, 0
for d in dirs:
nx = x + move[d][0]
ny = y + move[d][1]
if -5<=nx<=5 and -5<=ny<=5:
road.add((x, y, nx, ny))
road.add((nx, ny, x, y))
x, y = nx, ny
return len(road)/2
add
update
습관적으로 append를 쓰는데 집합은 add와 update를 사용하는 것을 잊지말자!