-
백준 16953번 : A -> B (C 언어)c c++ 언어 공부 2023. 3. 28. 01:01
https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637#include <stdio.h>#include <limits.h>int min = INT_MAX;int cnt = 0;long long a, b;int flag = 0;void dfs(long long a, int cnt){if (a > b){return;}if (a == b){min = (min > cnt) ? cnt : min;flag = 1;}dfs(2 * a, cnt + 1);dfs(10 * a + 1, cnt + 1);}int main(){scanf("%lld %lld", &a, &b);dfs(a, 1);if (flag == 1){printf("%d", min);}else{printf("-1");}}cs 문제풀이:
1. a와 b의 값을 scanf로 받는다.
2. DFS를 이용해서 전체 탐색을 한다.
경우가 2가지 이므로
dfs(2 * a, cnt + 1);dfs(10 * a + 1, cnt + 1);를 이용해 전체적으로 탐색.3. a==b가 같을 때 작은 수가 필요하므로 비교하여 저장.'c c++ 언어 공부' 카테고리의 다른 글
백준 290번 : 중앙 이동 알고리즘 (C 언어) (0) 2023.04.01 백준 1946번 : 신입 사원 (C 언어) (0) 2023.03.30 백준 2667번 : 단자번호붙이기 (C 언어) (0) 2023.03.27 2231번 : 분해합 (C언어) (0) 2023.03.27 백준 1629번 : 곱셈 (C언 (0) 2023.03.25