[Python][프로그래머스][Level3] 방문 길이

[Python][프로그래머스][Level3] 방문 길이

코드

def solution(dirs):
    answer=set()
    x=y=0
    move={'U': [0,1],'D':[0,-1],'R':[1,0],'L':[-1,0]}
    cp={'U': 'D','D':'U','R':'L','L':'R'}
    for d in dirs:
        nx,ny=move[d]
        if x+nx in [-6,6] or y+ny in [-6,6]:
            continue
        answer.add((x,y,cp[d]))
        x,y=x+nx,y+ny
        answer.add((x,y,d))
    return len(answer)//2

한 점에서 갈 수 있는 길은 4개이다.

한 점에서 위로 갈 경우 위에 있는 점은 아래로 내려가는 길을 방문한 것도 같다.

따라서 x좌표, y좌표, 방향을 원소로 하는 tuple을 기준으로 set을 만들고

시작점에서 가는 방향, 도착점에서 오는 방향 2가지를 set에 넣는다.

set의 길이의 절반이 답이 된다.

Discussion and feedback