방문길이

bird.j·2021년 10월 12일
0

프로그래머스

목록 보기
43/53

프로그래머스

이 문제는 처음에 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

집합 자료형에서 값 추가하기

  • 값 1개 추가하기 : add
  • 값 여러개 추가하기 : update

습관적으로 append를 쓰는데 집합은 add와 update를 사용하는 것을 잊지말자!

0개의 댓글