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 문법 정리 -->

- .