코린이의 기록

[BOJ] 1463 - 1로 만들기 (C++) 본문

c&c++/백준

[BOJ] 1463 - 1로 만들기 (C++)

코린이예요 2018. 5. 8. 19:23
반응형
1. 알고리즘

- DP문제
- 이 문제는 BFS 알고리즘으로 풀 수 있는 문제이다. 즉, Queue를 사용하여 문제를 푼다.

2. 전체 소스
#include <iostream> #include <queue> using namespace std; const int MAX = 1000000; int check[MAX+1]; int dist[MAX+1]; int main(){ int n; cin >> n; queue <int> q; q.push(n); check[n] = true; dist[n] = 0; while(!q.empty()){ int now = q.front(); q.pop(); if(now == 1) break; if(now%3 == 0 && check[now/3] == false){ q.push(now/3); check[now/3] = true; dist[now/3] = dist[now] + 1; } if(now%2 == 0 && check[now/2] == false){ q.push(now/2); check[now/2] = true; dist[now/2] = dist[now] + 1; } if(now-1 > 0 && check[now-1] == false){ q.push(now-1); check[now-1] = true; dist[now-1] = dist[now] + 1; } } cout<<dist[1] <<endl; return 0; }
3. 참고 사항
4. 문제


반응형

'c&c++ > 백준' 카테고리의 다른 글

[BOJ] 9095 - 1,2,3 더하기 (C++)  (0) 2018.05.08
[BOJ] 11727 - 타일링2 (C++)  (0) 2018.05.08
[BOJ] 1697 - 숨바꼭질 (C++)  (0) 2018.05.08
[BOJ] 10971 - 외판원 순회2 (C++)  (0) 2018.05.08
[BOJ] 10819 - 차이를 최대로 (C++)  (0) 2018.05.08
Comments