LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Subtract the Product and Sum of Digits of an Integer" 문제입니다.
--> https://leetcode.com/problems/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 <= 10^5
이 문제는 주어진 정수 n의 각 자리 숫자의 곱과 합을 구한 뒤, 곱에서 합을 뺀 결과를 반환하면 됩니다.
class Solution {
public int subtractProductAndSum(int n) {
int prod = subtractProduct(n);
int sum = subtractSum(n);
return prod - sum;
}
private int subtractProduct(int n) {
int prod = 1;
while (n != 0) {
prod = prod * (n % 10);
n /= 10;
}
return prod;
}
private int subtractSum(int n) {
int sum = 0;
while (n != 0) {
sum = sum + (n % 10);
n /= 10;
}
return sum;
}
}
저는 자바가 객체지향인 언어인 것을 활용하여 여러 메소드를 만들었습니다.
주요 메소드
- subtractProductAndSum 메소드 :
- 입력으로 주어진 정수 n을 받아서 자리 숫자의 곱과 합을 계산하는 두 메소드를 호출합니다.
- subtractProduct 메소드와 subtractSum 메소드를 호출하여 각각 곱과 합을 구하고, 그 차이를 반환합니다.
- subtractProduct 메소드 :
- 입력으로 주어진 정수 n의 각 자리 숫자의 곱을 계산합니다.
- prod 변수를 1로 초기화하고, n의 각 자리 숫자를 추출하여 prod에 곱합니다.
- n을 10으로 나누어 다음 자리 숫자로 이동합니다.
- 최종적으로 곱을 반환합니다.
- subtractSum 메소드 :
- 입력으로 주어진 정수 n의 각 자리 숫자의 합을 계산합니다.
- sum 변수를 0으로 초기화하고, n의 각 자리 숫자를 추출하여 sum에 더합니다.
- n을 10으로 나누어 다음 자리 숫자로 이동합니다.
- 최종적으로 합을 반환합니다.
시간 복잡도 :
- subtractProductAndSum 메소드 :
- 이 메소드는 subtractProduct와 subtractSum 메소드를 호출합니다. 따라서 전체 시간 복잡도는 두 메소드의 시간 복잡도의 합입니다.
- subtractProduct 메소드 :
- 주어진 정수 n의 각 자리 숫자를 한 번씩 처리하므로 시간 복잡도는 O(d)입니다. 여기서 d는 숫자 n의 자리 수입니다.
- subtractSum 메소드 :
- 주어진 정수 n의 각 자리 숫자를 한 번씩 처리하므로 시간 복잡도는 O(d)입니다. 여기서 d는 숫자 n의 자리 수입니다.
따라서, 전체 시간 복잡도는 O(d) + O(d) = O(d)입니다. 여기서 d는 숫자 n의 자리 수입니다.
공간 복잡도 :
- 공간 복잡도 :
- 이 알고리즘은 추가적인 리스트나 배열을 사용하지 않으며, 고정된 수의 변수(prod, sum)만을 사용합니다. 따라서 공간 복잡도는 O(1)입니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 1108. Defanging an IP Address (0) | 2024.07.29 |
---|---|
[LeetCode] - 724. Find Pivot Index (0) | 2024.07.29 |
[LeetCode] - 706. Design HashMap (0) | 2024.07.29 |
[LeetCode] - 225. Implementing Stack Using Queues (0) | 2024.07.29 |
[LeetCode] - 258. Add Digits (0) | 2024.07.29 |