[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.