오늘은 여기까지
[프로그래머스] 방문 길이 - 파이썬 Python 본문
https://school.programmers.co.kr/learn/courses/30/lessons/49994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
무향 그래프, 양방향 그래프라는 점을 고려해서 풀어야 한다. A에서 B로 가는 길과 B에서 A로 가는 길을 동일하게 취급한다.
dx, dy 문제와 유사하게 접근하되, 처음 지나간 길의 개수를 알고 싶으므로 집합 자료형을 활용한다.
def solution(dirs):
coordinate = {'U': (0, 1), 'D': (0, -1), 'R': (1, 0), 'L': (-1, 0)}
visited = set()
x, y = 0, 0
for d in dirs:
dx, dy = coordinate[d]
nx, ny = x + dx, y + dy
if abs(nx) <= 5 and abs(ny) <= 5:
visited.add(tuple(sorted(((x, y), (nx, ny)))))
x = nx
y = ny
return len(visited)
정렬을 하는 이유는 1. 방향성 제거 2. 중복 제거다.
1. 방향성 제거
- A → B와 B → A를 동일한 길로 저장하기 위해 정렬을 한다. 방향성이 제거된다.
2. 중복 제거
- 정렬을 통해 항상 같은 순서로 좌표를 저장할 수 있다. 따라서 중복을 한 번 더 제거할 수 있다.
'Problem Solving' 카테고리의 다른 글
[백준] 숫자판 점프 - 파이썬 Python (0) | 2024.10.09 |
---|---|
[백준] 부분수열의 합 - 파이썬 Python (1) | 2024.10.08 |
[프로그래머스] 실패율 - 파이썬 Python (0) | 2024.10.08 |
[백준] 두 스티커 - 파이썬 Python (1) | 2024.10.07 |
[백준] 숫자 야구 - 파이썬 Python (3) | 2024.10.03 |