본문 바로가기

LeetCode

[LeetCode] - 1281. Subtract the Product and Sum of Digits of an Integer

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;
    }
}

 

저는 자바가 객체지향인 언어인 것을 활용하여 여러 메소드를 만들었습니다.

주요 메소드

  1. subtractProductAndSum 메소드 :
    • 입력으로 주어진 정수 n을 받아서 자리 숫자의 곱과 합을 계산하는 두 메소드를 호출합니다.
    • subtractProduct 메소드와 subtractSum 메소드를 호출하여 각각 곱과 합을 구하고, 그 차이를 반환합니다.
  2. subtractProduct 메소드 :
    • 입력으로 주어진 정수 n의 각 자리 숫자의 곱을 계산합니다.
    • prod 변수를 1로 초기화하고, n의 각 자리 숫자를 추출하여 prod에 곱합니다.
    • n을 10으로 나누어 다음 자리 숫자로 이동합니다.
    • 최종적으로 곱을 반환합니다.
  3. 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)입니다.

내 코드 Runtime 결과