화면에 숫자가 표시된 고장난 계산기가 있다고 가정하면 두 가지 작업만 수행할 수 있습니다.
-
Double - 디스플레이의 숫자에 2를 곱하거나;
-
Decrement - 표시되는 숫자를 1씩 줄입니다.
처음에 계산기는 숫자 X를 표시합니다. 우리는 숫자 Y를 표시하는 데 필요한 최소 연산 수를 찾아야 합니다.
따라서 입력이 X =5이고 Y가 8인 경우 출력은 2가 됩니다. 감소하면 한 번, 두 배로 증가합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
해상도 :=0
-
Y> X
동안-
res :=res + Y 모드 2 + 1
-
Y :=Y가 짝수이면 Y / 2, 그렇지 않으면 (Y + 1) / 2
-
-
리턴 res + X - Y
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def brokenCalc(self, X, Y): res = 0 while Y > X: res += Y % 2 + 1 Y = Y // 2 if Y % 2 == 0 else (Y + 1)//2 return res + X - Y ob = Solution() print(ob.brokenCalc(5,8))
입력
5 8
출력
2