티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/49994
코드
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)을 가는 것은 똑같은 길이기 때문에 길은 양방향이라는 것이 중요하다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level3, 가장 먼 노드 (Python) (0) | 2021.07.26 |
---|---|
[프로그래머스] Level3, 네트워크 (Python) (0) | 2021.07.14 |
[프로그래머스] Level1, 3진법 뒤집기 (Python) (0) | 2021.06.26 |
[프로그래머스] Level1, 약수의 개수와 덧셈 (Python) (0) | 2021.06.25 |
[프로그래머스] Level1, 음양 더하기 (Python) (0) | 2021.06.25 |
댓글