반응형
문제 설명




알고리즘 고민
좌표계에서 원하는 위치까지 이동한 후 새로운 곳을 이동한 횟수를 세는 문제이다. 일단 방향에 대한 정보를 딕셔너리 형태로 만들어 사용하고자 하였다. 그 후에 처음에는 robust하게 다음 위치와 현재 위치의 입력이 있는지 확인하고자 하였는데 이렇게 해서는 코드가 너무 복잡해진다고 생각이 들었다. 그래서 만약 중복된 길인 경우는 반대 방향에서 오는 것과 해당 방향으로 이동하는 두 가지 경우가 있는데 이 경우를 만약에 set에 없다면 두가지를 모두 추가하여 중복을 제거하고자 하였다. 마지막에 출력할 때는 set의 길이를 절반으로 만들어 주면 쉽게 해결할 수 있다.
코드
def solution(dirs):
answer = 0
direction = {'U' : (1,0), 'R' : (0,1), 'L' : (0,-1), 'D' : (-1,0)}
visited = set()
x, y = 0, 0
for i in dirs:
dy, dx = direction[i]
sum_y = y + dy
sum_x = x + dx
if -5 <= sum_y <= 5 and -5<= sum_x <= 5:
visited.add(((y,x),(sum_y, sum_x)))
visited.add(((sum_y, sum_x),(y, x)))
y = sum_y
x = sum_x
return len(visited) //2반응형
'알고리즘' 카테고리의 다른 글
| [알고리즘] 프로그래머스 - 롤케이크 자르기(Python) (1) | 2025.02.21 |
|---|---|
| 프로그래머스 - 더 맵게(Python) (0) | 2025.02.17 |
| 프로그래머스 - 튜플(Python) (0) | 2025.02.10 |
| 프로그래머스 - [1차]캐시(Python) (0) | 2025.02.09 |
| 프로그래머스 - 의상(Python) (0) | 2025.02.08 |