알고리즘/구현
파이썬 | 프로그래머스 | 방문 길이
cha-n
2020. 11. 1. 13:56
def dir(d, now):
if d == "U":
if now[1] == 5:
return (now, now) # 범위를 벗어나면 현재 위치를 두 개 갖는 튜플 반환
return (now, (now[0], now[1] + 1))
elif d == "D":
if now[1] == -5:
return (now, now)
return (now, (now[0], now[1] - 1))
elif d == "R":
if now[0] == 5:
return (now, now)
return ((now[0] + 1, now[1]), now)
else:
if now[0] == -5:
return (now, now)
return ((now[0] - 1, now[1]), now)
def solution(dirs):
route = {}
move = (0, 0) # 시작 위치
first = 0 # 처음 가 본 길
for d in dirs:
tmp = dir(d, move)
rev = (tmp[1], tmp[0]) # 역방향으로 이동한 적이 있는지 확인
if (route.get(tmp) is None and route.get(rev) is None) and tmp[0] != tmp[1]:
route[tmp] = 1
first += 1
if d == "U" or d == "D":
move = tmp[1]
else:
move = tmp[0]
return first
문제 출처 programmers.co.kr/learn/courses/30/lessons/49994