[Python] 프로그래머스(Lv2) - 방문 길이

Kerri·2021년 3월 18일
0

코테

목록 보기
22/67

안녕하세요 :)

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

풀이

이 문제는 지금좌표와 이동할좌표를 구해 방문했는지 안했는지를 check하는 Set을 이용해서 풀었습니다.
첫 시작하는 좌표는 (5, 5)로 했습니다.
문제 예시 1번 명령어(L)이면, (5, 4)와 (5, 5) 사이를 방문하게 되는데요.
순서는 상관이 없으므로 이 두개를 모두 check해주면 되겠습니다.
(5, 4) (5, 5)
(5, 5) (5, 4)

d = {
    'U': [-1, 0],
    'D': [1, 0],
    'R': [0, 1],
    'L': [0, -1]
}

def solution(dirs):
    check = set()   
    pos = [5, 5]
    ans = 0
    
    for dir in dirs:
        x, y = pos
        dx, dy = d[dir]
        new_x , new_y = x + dx, y + dy
        key_1 = f'{x}{y}{new_x}{new_y}'
        key_2 = f'{new_x}{new_y}{x}{y}'
        if 0 <= new_x <= 10 and 0 <= new_y <= 10:
            pos = [new_x, new_y]
            if key_1 not in check:
                ans += 1
                check.add(key_1)
                check.add(key_2)
                
    return ans
profile
안녕하세요 !

0개의 댓글