프로그래머스 방문길이

·2022년 5월 26일
0

문제

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로 나누는 식으로 해결된다.

profile
나 예인쓰, 응애인디

0개의 댓글