#include <iostream>
#include <algorithm>
using namespace std;
long long a, b;
long long min_count = 1000000000;
bool flag = false;
void dfs(long long a, long long cnt) {
if (a > b) return;
else if (a == b) {
flag = true;
min_count = min(min_count,cnt);
}
else if (a < b) {
dfs(a * 2, cnt+1);
dfs((a * 10) + 1, cnt+1);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> a >> b;
dfs(a, 1);
flag == false ? cout << "-1" : cout << min_count;
return 0;
}
๊ณ ๋ คํด์ผํ ์ ๐ค
- Greedy๋ฌธ์ ์ด๋ฏ๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
- ์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ์์ด๋ ๊ฐ์ฅ ์ ์ count๋ก ํ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ํํ๋ค.
๐ค
์๊ฐ ์ ๋ฆฌ- ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ดค์ ๋, ํ ๊น์ด๊ฐ ์ถ๊ฐ๋ ๋ ๋ง๋ค ์์ ๊ฐ์ฅ ๋์ 1์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ์๋ฅผ 2๋ฐฐ ํ๋ 2๊ฐ์ง๋ก ๊ฐ๋ฆฌ๋ ๊ฒ์ ๋ชจ๋ ํ์ํ๋ ๊ณผ์ ์ ๊ทธ๋ํ ํ์๊ณผ ์ ์ฌํ๋ค๊ณ ํ๋จํ์๋ค. (์ฌ์ค ์ฌ๊ท์ ๋ ์ ์ฌํ๊ฒ ๊ฐ๊ธฐ๋.. ๐ )
- ๊ทธ๋ํ์์ ๊ฐ์ฅ ๊น์ ๊ณณ ๊น์ง ๋ค์ด๊ฐ๋ค๊ฐ ์กฐ๊ฑด์ ๋ถํฉํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋ (๋ฐฉ๋ฒ์ด๋ผ ํจ์ ์์ ๋์ 1์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ์๋ฅผ 2๋ฐฐํ๋๊ฒ.)
- ์ ๋ง ๋จ์ํ์ง๋ง ์์ ๊ฐ์ฅ ๋์ 1์ ์ถ๊ฐํ๋ ๋ถ๋ถ์์ ๊ณ ๋ฏผ์ด ์์๋ค. (๊ฐ์๋ฆฌ์ ์๋ฅผ ํ๋์ฉ 10๋ฐฐ ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋๋ฐ ๊ทธ๋ฅ 10๋ฐฐ๋ฅผ ๊ณฑํ๊ณ 1์ ๋ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.!! ๋ค์์ ๋น์ทํ ๋ฌธ์ ์์ ์จ๋จน์ด์ผ๊ฒ ๋ค ๐คฃ)
- ์๊ณ ๋ฆฌ์ฆ์์ ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฒ์ ์จ๋ณด์๋ค. (swift์ ์์ฑ ๋ฐฉ๋ฒ์ด ๋์ผํ๋ค!! ๋งค์ฐ ํธ๋ฆฌ..๐)
- ์ ์๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ ๊ฒ, ๋ณ์๊ฐ ๋ง์์ง๋ ๊ฑธ ๋งค์ฐ ๊ทนํํ๋๋ฐ.. ๊ฐ๋ ์ฑ์ ์ํด flag ๋ณ์๋ฅผ ์ฌ์ฉํด์ ๋ํ๋ด ๋ณด์๋ค. (๋ณด๊ธฐ ๋ ์ข์ ๊ฒ ๊ฐ๋ค. ์์ข์ ๊ณ ์ ๊ด๋ ์ ๋ฒ๋ ค์ผ๊ฒ ๋ค.)
'Computer Science > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ํผ๋ณด๋์น ์์ด์ ๊ตฌํํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2022.12.29 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ฐ ์๋ฆฌ ์์ ํฉ ๊ตฌํ๊ธฐ (0) | 2022.09.15 |
[๋ฐฑ์ค/Baekjoon] 1012๋ฒ ์ ๊ธฐ๋ ๋ฐฐ์ถ (C++) (0) | 2022.03.04 |