알고리즘/프로그래머스
[프로그래머스] Level2, 방문길이(Python)
wookcode
2021. 6. 28. 19:29
728x90
반응형
문제

https://programmers.co.kr/learn/courses/30/lessons/49994
코딩테스트 연습 - 방문 길이
programmers.co.kr
코드
def solution(dirs):
answer = 0
dxs, dys = [-1, 0, 1, 0], [0, -1, 0, 1] # x,y 좌표로 안보고 행과열로 봄
d = {"U": 0, "L":1, "D":2, "R":3}
visited = set()
answer = 0
x, y = 0, 0
for dir in dirs:
i = d[dir]
nx, ny = x + dxs[i], y + dys[i]
if nx < -5 or nx > 5 or ny < -5 or ny > 5:
continue
if (x,y,nx,ny) not in visited:
visited.add((x, y, nx, ny))
visited.add((nx, ny, x, y))
answer += 1
x, y = nx, ny
return answer
U, L, D, R 일때 각각 이동시킬 수 있게 리스트를 선언해준다.
-5 ~ 5 까지로 범위가 정해져 있으므로 범위를 초과하면 continue 시켜준다.
처음 방문한 길의 길이만 구하기 때문에 set으로 중복값을 제거해준다.
근데 (0, 0)에서 (0,1)을 가는 것과 (0,1)에서 (0,0)을 가는 것은 똑같은 길이기 때문에 길은 양방향이라는 것이 중요하다.
반응형