
1. 문제 풀이 아이디어
b
가 짝수라면 2로 나누고, 끝자리가 1이라면 10으로 나누는 방식으로 문제를 해결한다.
2. 나의 정답 코드
using (StreamReader sr = new StreamReader(Console.OpenStandardInput()))
using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
{
string[] split = sr.ReadLine().Split();
int a = int.Parse(split[0]);
int b = int.Parse(split[1]);
int result = 1;
while (b > a)
{
if (b % 2 == 0)
{
b /= 2;
}
else if (b % 10 == 1)
{
b = (b - 1) / 10;
}
else
{
break;
}
result++;
}
sw.WriteLine(a == b ? result : -1);
}
3. 정리
b
가 짝수일 경우 2로 나누고, 끝자리가 1이라면 10으로 나눈다.
- 변환 횟수를 증가시키고, 더 이상 변환이 불가능하면 반복을 종료한다.
a
와b
가 같으면 변환 횟수를 출력하고, 그렇지 않으면 -1을 출력한다.
Share article