본문 바로가기
알고리즘 & PS

[Python] 프로그래머스 Lv 3 - 방문 길이

by 다람이도토리 2021. 4. 23.

큰 집단에서 데이터를 가져와야 할 때 제발 좀 해시, 해시를 생각해내자고 좀.

프로그래머스 Lv 3

출처 : https://programmers.co.kr/learn/courses/30/lessons/49994

 

알고리즘

알고리즘은 단순하다, 그저 정말로 방문한 길을 다 저장해버리면 그만이다.

단, 못가는 길을 막아야하므로, 범위에 조건을 걸어야 할 것이다.

그런데, 길이 몇백개인데, 그걸 다  한번의 이동마다 모두 조사는 불가능하므로, dict를 활용한다.

 

코드

def solution(dirs):
    # coord를 어떻게 저장
    x, y = 0, 0
    # 이렇게 dict를 만들어버린다. key값은 중복될수 없다 활용.
    coord = dict()
    for cmd in dirs:
        if cmd == 'U' and y < 5:
            coord[(x, y, x, y+1)] = True
            y += 1
        elif cmd == 'D' and y > -5:
            coord[(x, y-1, x, y)] = True
            y -= 1
        elif cmd == 'R' and x < 5:
            coord[(x, y, x+1, y)] = True
            x += 1
        elif cmd == 'L' and x > -5:
            coord[(x-1, y, x, y)] = True
            x -= 1
    answer = len(coord)
    return answer