1281. Subtract the Product and Sum of Digits of an Integer
Description
Given an integer number n, return the difference between the product of its digits and the sum of its digits.
Example 1:
- Input: n = 234
- Output: 15
- Explanation:
Product of digits = 2 * 3 * 4 = 24
Sum of digits = 2 + 3 + 4 = 9
Result = 24 - 9 = 15
Example 2:
- Input: n = 4421
- Output: 21
- Explanation:
Product of digits = 4 * 4 * 2 * 1 = 32
Sum of digits = 4 + 4 + 2 + 1 = 11
Result = 32 - 11 = 21
Constraints:
- 1 <= n <= 105
💡 Hint 1:
How to compute all digits of the number ?
💡 Hint 2:
Use modulus operator (%) to compute the last digit.
💡 Hint 3:
Generalise modulus operator idea to compute all digits.
Submitted Code
class Solution:
def subtractProductAndSum(self, n: int) -> int:
product, sum = 1, 0
while n > 0:
last = n % 10 # 마지막 자리 숫자
product *= last
sum += last
n //= 10
return product - sum
Runtime: 0 ms | Beats 100.00%
Memory: 19.41 MB | Beats 5.95%
% 연산으로 자릿수만큼 while문을 반복하는 방법이 가장 정석인 것 같다.
Other Solutions
1st
from functools import reduce
import operator
class Solution:
def subtractProductAndSum(self, n):
A = list(map(int, str(n)))
return reduce(operator.mul, A) - sum(A)
time complexity: 𝑂(log𝑛)
space complexity: 𝑂(1)
정수 n을 문자열로 변경하여 푸는 방법이다. 정수 n의 자릿수는 ⌊logn⌋ + 1개이기 때문에 위의 방법과 시간복잡도는 동일하다.