반응형
출처 : https://www.acmicpc.net/problem/1697
BFS문제 이다.
+1 , -1 , *2의 경우를 체크를 하고 Que에 넣어서 1씩증가 시켜가면서 동생의 위치까지 과정을 확인한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> using namespace std; int arr[100001]; int t[100001]; int N, K; int tmp; int cnt; void push(int x) { cnt++; arr[cnt] = x; } int main() { int T; cin >> N >> K; arr[0] = N; t[N] = 1; tmp = 0; while (tmp <= cnt) { T = arr[tmp]; if (T - 1 >= 0 && T - 1 <= 100000 && t[T - 1] == 0) { t[T - 1] = t[T] + 1; push(T - 1); } if (T + 1 >= 0 && T + 1 <= 100000 && t[T + 1] == 0) { t[T +1] = t[T] + 1; push(T + 1); } if (T * 2 >= 0 && T * 2 <= 100000 && t[T * 2] == 0) { t[T * 2] = t[T] + 1; push(T * 2); } tmp++; } cout << t[K]-1 << endl; return 0; } | cs |
반응형
'프로그래밍 > 문제' 카테고리의 다른 글
바이러스 (0) | 2017.01.02 |
---|---|
단지번호 붙이기 (0) | 2017.01.02 |
백준알고리즘 . 계단오르기(DP) (0) | 2016.09.13 |
백준알고리즘 . 연속합(DP) (0) | 2016.09.07 |
백준알고리즘 . 숫자삼각형(DP) (0) | 2016.09.06 |