문제 출처
풀이
어떤 칸 x에 도달하는 최단 경로를 저장해주는 배열(map)과 x에 최단 경로로 도착할 수 있는 모든 경로들의 갯수를 저장해주는 배열(acc)을 따로 선언해주어야 합니다.
- 큐에 데이터를 넣지 않는 경우
1. x에 도달했을 때 최단 경로가 아닐 경우
2. x가 이미 최단 경로가 갱신되어 있는 경우
즉, x에 최단 경로로 최초로 도달했을 때 방문 표시를 해주고 이후에 최단 경로로 도달하는 경로들은 x위치에 경로의 갯수만 저장해주는 것입니다.
위와 같이 진행했을 때 목적지에 최단 경로로 도달할 수 있는 모든 경우의 수를 구할 수 있습니다. 그 이유는 다음과 같습니다.
큐는 선입선출(FIFO) 자료구조 입니다. 먼저 들어온 데이터가 먼저 나가는 자료구조이죠.
따라서 어떤 칸 x에 최단 경로로 도달할 수 있는 모든 경우가 x에 도달하고 나서야 x의 좌표가 큐에서 나오는 것입니다.
코드
small-j/BOJ_Algorithm
Contribute to small-j/BOJ_Algorithm development by creating an account on GitHub.
github.com
'BOJ' 카테고리의 다른 글
[BOJ] 1612 - 가지고 노는 1 (0) | 2021.01.10 |
---|---|
[BOJ] 1484 - 다이어트 (0) | 2021.01.08 |
[BOJ] 15898 - 피아의 아틀리에 ~신비한 대회의 연금술사~ (0) | 2021.01.03 |
[BOJ] 18291 - 비요뜨의 징검다리 건너기 (0) | 2021.01.03 |
[BOJ] 16197 - 두 동전 (0) | 2021.01.02 |