방문 길이 (python)

SeoYng·2020년 9월 5일
2

프로그래머스 문제 - 방문 길이 LV3

https://programmers.co.kr/learn/courses/30/lessons/49994
셋, 간선 처리

👀 깃헙 소스

문제설명

명령어가 매개변수 dirs로 주어질 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하여 return 하는 solution 함수를 완성해 주세요.

입출력 예

dirs		answer
ULURRDLLU	7
LULLLLLLU	7

솔루션
좌표에서 방문가능한 좌표로 이동한다면, 간선을 set에 저장해둔다.
(출발지점x, 출발지점y, 도착지점x, 도착지점y)
(도착지점x, 도착지점y, 출발지점x, 출발지점y)
겹치는 길이 있을 수 있으므로 set을 사용하고 len을 return 한다.

주의
출발지점과 도착지점이 반대여도 같은 간선이므로 한번 저장할때
(출발지점x, 출발지점y, 도착지점x, 도착지점y)
(도착지점x, 도착지점y, 출발지점x, 출발지점y)
로 두 튜플로 저장하여 예외처리 해준다.

코드

# 파이썬
def solution(dirs):
    command = {'U':(0, 1), 'D':(0, -1), 'L':(-1, 0), 'R':(1, 0)}
    road = set()
    cur_x, cur_y = (0,0)
    
    for d in dirs:
        next_x, next_y = cur_x + command[d][0], cur_y + command[d][1]
        if -5<= next_x <=5 and -5<= next_y <=5:
            road.add((cur_x, cur_y, next_x, next_y))
            road.add((next_x, next_y, cur_x, cur_y))
            cur_x, cur_y = next_x, next_y

    return len(road) // 2
profile
Junior Web FE Developer

3개의 댓글

comment-user-thumbnail
2021년 4월 5일

멋있는 코드네요 감사합니당

1개의 답글
comment-user-thumbnail
2022년 2월 8일

와 엄청 간결하네요 많이 배웠습니다.

답글 달기