<< 문제 >>
https://www.acmicpc.net/problem/16953
앞에서부터 B를 찾으러 올라가는 것은 너무 비효율적이다.
오히려 B에서 A로 좁혀가는 것이 훨씬 효율적으로 풀이가 가능하다.
사실 그것만 하면 진짜 별거없는 문제
<< 코드 >>
#include <iostream>
using namespace std;
int main() {
int NumA, NumB;
cin >> NumA >> NumB;
int result = 1;
while (1) {
if (NumB % 10 == 1) {
NumB /= 10;
}
else if (NumB % 2 == 0){
NumB /= 2;
}
else { // 2로 나뉘어 떨어지지 않는 경우
result = -1;
break;
}
result++;
if (NumB == NumA) {
break;
}
else if(NumB < NumA) { // NumA보다 작아지는 경우
result = -1;
break;
}
}
cout << result;
}
<< GitHub>>
< 백준 BaekJoon : 20058번 마법사 상어와 파이어스톰 > C++ (0) | 2024.04.09 |
---|---|
< 백준 BaekJoon : 2457번 공주님의 정원 > C++ (0) | 2024.04.01 |
< 백준 BaekJoon : 1715번 카드 정렬하기 > C++ (0) | 2024.03.30 |
< 백준 BaekJoon : 1927번 최소 > C++ (0) | 2024.03.15 |
< 백준 BaekJoon : 1992번 쿼드트리 > C++ (0) | 2024.02.02 |
댓글 영역