https://programmers.co.kr/learn/courses/30/lessons/49994
좌표에서 지나간 길이의 수를 구한다.
이미 갔던 길은 중복으로 처리한다.
비교적 쉽게 풀게 된 문제, from x,y to x,y를 튜플로 적어 set으로 합집합을 만들었다.
그러나 예를들어 (0,0,1,0) 와 (1,0,0,0)는 같은 길이지만 set으로 소거할 수 없다는 것을 고려하지 못해 오류가 나서 조금 애를 먹었다.
def solution(dirs):
answer = 0
direc = {
'U' :[0,1],
'D' :[0,-1],
'L' :[-1,0],
'R' :[1,0]
}
curX = 0
curY = 0
visited=[]
for dir in dirs :
toX = curX+direc[dir][0]
toY = curY+direc[dir][1]
if abs(toX) > 5 or abs(toY) > 5 :
continue
road = (curX,curY,toX,toY)
visited += [(curX,curY,toX,toY),(toX,toY,curX,curY)]
curX,curY = toX,toY
answer = len(list(set(visited)))//2
return answer
결과적으론 양방향의 길을 처음부터 함께 visited배열에 더해주고 나중에 2로 나누는 식으로 해결된다.