문제
출처 : www.acmicpc.net/problem/12852
숫자 N이 주어졌을때,
1. 나누기 2
2. 나누기 3
3. 빼기 1
을 적절히 사용하여 최소한의 연산으로 1을 만드는 문제다.
풀이
너비우선 탐색이기때문에, 항상 최소경로가 가장 먼저나오는 BFS를 사용해 최소 연산을 찾아주면된다.
경로는,
의 check배열에 {연산횟수, 이전 숫자}형태로 저장해준다. 이전숫자가 없을경우(처음숫자) 이전숫자 위치에 -1을 저장해놓는다.
(연산횟수보다 작은 연산횟수가 나오지않는다면 check배열이 업데이트 되지않으므로 항상 성립한다)
배열을 따라 1부터 올라가며 경로를 찾아주고 역순으로 출력해주면 답
소스코드
'알고리즘 (2020 : 08 : 10 ~ ) > BFS,DFS' 카테고리의 다른 글
[백준 / BOJ] 16724 피리 부는 사나이 (1) | 2021.01.06 |
---|---|
[백준 / BOJ] 2342 Dance Dance Revolution (0) | 2021.01.05 |
[백준 / BOJ] 17071 숨바꼭질 5 (1~5) (0) | 2020.12.28 |
[백준 / BOJ] 5427 불 (0) | 2020.11.23 |
[백준 / BOJ] 1405미친로봇 (0) | 2020.10.07 |