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
멋있는 코드네요 감사합니당