Post

[Programmers] #181929 - 원소들의 곱과 합 [Java][C++][Python]

정수 리스트의 모든 원소의 곱과 합의 제곱을 비교하는 워밍업 문제.

[Programmers] #181929 - 원소들의 곱과 합 [Java][C++][Python]

문제 링크


1. 아이디어

num_list를 한 번 순회하면서 모든 원소의 곱과 합을 각각 누적한다. 원소가 최대 9, 길이가 최대 10이라 곱은 최대 $9^{10}$까지 커질 수 있어 int 범위를 넘어설 수 있으므로 큰 정수 타입으로 누적해야 한다. 순회가 끝나면 곱이 합의 제곱보다 작은지 비교해 1 또는 0을 반환한다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(1)$

($N$ = num_list의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public int solution(int[] num_list) {
        long mul = 1, sum = 0;
        for (int x : num_list) {
            mul *= x;
            sum += x;
        }

        return mul < sum * sum ? 1 : 0;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> num_list) {
    long long mul = 1, sum = 0;
    for (int x : num_list) {
        mul *= x;
        sum += x;
    }

    return mul < sum * sum;
}
1
2
3
4
5
import math


def solution(num_list):
    return int(math.prod(num_list) < sum(num_list) ** 2)

This post is licensed under CC BY 4.0 by the author.