티스토리 뷰
https://www.acmicpc.net/problem/12851
12851번: 숨바꼭질 2
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때
www.acmicpc.net
시작점 N에서 K까지 최단거리를 구해야 한다.
여기까지라면 그냥 기본 bfs 돌리면 되는데, 최단거리로 가는 방법의 수까지 구해야 한다.
이말은 즉 한번 방문한 지점도 다시 방문할수도 있다는 뜻이므로 int형 배열을 만들어 해당 지점 도달하는데 걸리는 최단거리 값을 저장하고, 다음 지점으로 이동할때 걸리는 시간이 이미 기록된 시간 보다 크다면 이동하지 않도록 한다.
목적지점에 최초로 도착했을때 걸린 시간이 최단거리이다.
따라서 두번째 도착했을때 부터는 방법의 수값을 증가시키면 된다.
그리고 당연히 목적지점 도착했을 때는 continue 문으로 더 이상 이동은 막아야 한다.
'PS' 카테고리의 다른 글
백준 1981. 검문 (0) | 2022.12.01 |
---|---|
백준 11568. 민균이의 계략 (0) | 2022.11.29 |
백준 1744. 수 묶기 (0) | 2022.11.29 |
백준 10830. 행렬 제곱 (0) | 2022.11.28 |
백준 5052. 전화번호 목록 (0) | 2022.11.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- recursion
- 조합
- 재귀
- db
- BFS
- dfs
- Kruskal
- DP
- Python
- greedy
- 이분탐색
- Tree
- Spring
- Stack
- Brute Force
- 자료구조
- graph
- Dijkstra
- Implementation
- binary search
- priority queue
- CSS
- C
- MVC
- C++
- Unity
- back tracking
- permutation
- two pointer
- floyd warshall
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함