CODING TEST/programmers
Day5 - 원소들의 곱과 합
iamyuunzo
2025. 7. 12. 11:06
📌 문제 정보
- 문제 이름 : 코딩 기초 테스트 - 원소들의 곱과 합
- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181929
📌 문제 요약
- 핵심 조건: num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return
- 제한: 2 ≤ num_list의 길이 ≤ 10, 1 ≤ num_list의 원소 ≤ 9
📌 내 풀이 및 코드
class Solution {
public int solution(int[] num_list) {
int a = 1;
int b = 0;
for (int i=0; i<num_list.length; i++) {
a *= num_list[i];
b += num_list[i];
}
return a < b * b ? 1 : 0;
}
}
- 접근 방식은 맞았는데 for문 안의 식을 구현할 때 어려웠음. 한 원소만 비교하는 코드를 짰었음.
- b 연산식을 쓸 때 원소 합의 제곱을 저 식 안에서 구현해야하는줄 알았음.
📌 다른 사람들 풀이
//1
class Solution {
public int solution(int[] num_list) {
int answer = 0;
int sum = 0; // 합
int mult = 1; // 곱
for (int i : num_list) { // 배열 원소 하나씩 i로 받음
sum += i; // 합 누적
mult *= i; // 곱 누적
}
answer = Math.pow(sum, 2) > mult ? 1 : 0; // 합 제곱 vs 곱 비교
return answer;
}
}
// 2
import java.util.*;
class Solution {
public int solution(int[] num_list) {
int sum = Arrays.stream(num_list)
.reduce(Integer::sum)
.getAsInt(); // sum 구하기
int product = Arrays.stream(num_list)
.reduce((i, j) -> i * j)
.getAsInt(); // 곱 구하기
return product < sum * sum ? 1 : 0;
}
}
<-- 다른 풀이 요약 -->
- 1 : for-each문 사용, Math.pow(a,b) (제곱) 사용
- 2 : 배열을 Stream으로 변환함.
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
- .