반응형
예제 입력 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로 풀어봤다.
한번에 통과!!!
반응형
'C언어' 카테고리의 다른 글
백준 15990번 1, 2, 3, 더하기 5 (0) | 2020.08.28 |
---|---|
백준 11052번 : 카드 구매하기 bfs -> 최적 dp배열 (0) | 2020.08.21 |
백준 9095번 1, 2, 3 더하기 bfs로 한방에 통과! (0) | 2020.08.21 |
백준 11726번 2*n 타일링 bfs => 피보나치로 풀기 (0) | 2020.08.21 |
백준 1676번 팩토리얼 0의 개수 (0) | 2020.08.19 |
백준 10872번 팩토리얼 : while문을 이용한 팩토리얼 계산 (0) | 2020.08.19 |
백준 1929 소수구하기 : prime배열에 저장하고 구하기! (0) | 2020.08.19 |
백준 2609번 / 1934번 최소공배수 최대공약수 문제 (0) | 2020.08.19 |