C언어
백준 1463번 : 1로 만들기 : bfs로 풀었다.
mcdn
2020. 8. 21. 12:49
반응형
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
예제 입력 1
2
예제 출력 1
1
예제 입력 2
10
예제 출력 2
3
힌트
10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들 수 있다.
#include <iostream>
#include <queue>
using namespace std;
struct Node
{
int num;
int cnt;
};
queue <Node> que;
void bfs(int n, int lev)
{
Node node, temp;
node = { n, lev };
que.push(node);
while (1)
{
node = que.front();
que.pop();
if (node.num == 1)
break;
if (node.num % 3 == 0)
{
//temp = { node.num / 3, node.cnt + 1 };
que.push({ node.num / 3, node.cnt + 1 });
}
if (node.num % 2 == 0)
{
que.push({ node.num / 2, node.cnt + 1 });
}
que.push({ node.num - 1, node.cnt + 1 });
}
cout << node.cnt;
}
int main(void)
{
int n;
cin >> n;
bfs(n, 0);
}
예전에 배운 bfs로 풀어봤다.
한번에 통과!!!
반응형