좌표평면 상에서 원점 (0, 0)으로부터 주어진 이동 명령어 UDLR(상하좌우)를 실행했을 때, 지나간 길 중 처음 지나가본 길의 길이를 반환하는 함수 작성
def solution(dirs):
sets = set()
y, x = 0, 0
udrl = {'U': (1, 0), 'D': (-1, 0), 'R': (0, 1), 'L': (0, -1)}
for d in dirs:
dy, dx = udrl[d]
ny = y + dy
nx = x + dx
if -5 <= ny <= 5 and -5 <= nx <= 5:
sets.add(((y, x), (ny, nx)))
sets.add(((ny, nx), (y, x)))
y = ny
x = nx
return len(sets) // 2
set()
변수 sets
를 설정y
, x
를 각각 0
으로 설정dict
타입 변수 udrl
을 설정하고, 각 명령어마다 이동해야하는 방향의 좌표값 설정for
Loop으로 주어진 명령어 문자열 리스트에서 각 원소를 순회하며 이동방향 delta값 dy
, dx
저장 및 명령어 수행 시 이동하게될 좌표 ny
, nx
생성ny
, nx
값이 각각 -5 ~ 5 범위 이내일 때에만 sets
변수에 ((기존좌표), (이동좌표))
, ((이동좌표), (기존좌표))
값을 저장하고 y
, x
를 이동좌표 값으로 업데이트sets
의 길이는 이동하게 된 거리의 2배가 되므로, 2
로 나눈 몫을 반환