[알고리즘 문제 풀기] A → B(16953)

C#
lhs's avatar
Mar 04, 2025
[알고리즘 문제 풀기] A → B(16953)
notion image

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으로 나눈다.
  • 변환 횟수를 증가시키고, 더 이상 변환이 불가능하면 반복을 종료한다.
  • ab가 같으면 변환 횟수를 출력하고, 그렇지 않으면 -1을 출력한다.
Share article

LHS's Study Space