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
'알고리즘 > 구현' 카테고리의 다른 글
파이썬 | 프로그래머스 | 숫자 게임 (0) | 2020.11.05 |
---|---|
파이썬 | 백준 | 1063 | 킹 (0) | 2020.11.04 |
파이썬 | 프로그래머스 | 소수 만들기 (0) | 2020.10.29 |
파이썬 | 프로그래머스 | 스킬트리 | for-else문 (0) | 2020.10.29 |
파이썬 | 백준 | 14499 | 주사위 굴리기 (0) | 2020.10.28 |