두 개의 숫자 num과 k가 있다고 가정하면 num에서 k 연속 숫자의 가장 큰 곱을 찾아야 합니다. num은>=k 자리가 보장된다는 점을 명심해야 합니다.
따라서 입력이 num =52689762 및 k =4와 같으면 출력은 3024가 되고 연속된 4자리 숫자의 최대 곱은 (8*9*7*6) =3024입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 가장 큰 :=0
- 캔디 :=1
- while (num/10의 몫)^(k-1)> 0, do
- 숫자 :=(숫자의 마지막 숫자)^k
- 캔디 :=1
- 숫자> 0, do
- cand :=cand * (숫자 모드 10)
- cand가 0과 같으면
- 루프에서 나오다
- 숫자 :=숫자의 몫 / 10
- largest :=가장 큰 것과 캔드의 최대값
- num :=숫자의 몫 / 10
- 가장 큰 수익
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, num, k): largest = 0 while num // 10 ** (k - 1) > 0: digits = num % 10 ** k cand = 1 while digits > 0: cand *= digits % 10 if cand == 0: break digits //= 10 largest = max(largest, cand) num //= 10 return largest ob = Solution() num = 52689762 k = 4 print(ob.solve(num,k))
입력
52689762, 4
출력
3024