Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 원소들의 곱과 합 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 원소들의 곱과 합 (Java/자바)

luke-king 2025. 10. 11. 17:10

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181929

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        int sum = 1;
        double pow = 0;
        
        for(int i = 0; i < num_list.length; i++){
            sum *= num_list[i];
            pow += num_list[i];
        }
        
        pow = Math.pow(pow,2);
        
        if(pow > sum){
            answer = 1;
        }else{
            answer = 0;
        }
        
        return answer;
    }
}

이번 문제는 프로그래머스 "원소들의 곱과 합" 문제다.

문제 설명은 어려운 게 없어 바로 풀이해보겠다.

 

1. sum 은 num_list의 각 인덱스 값들을 곱하기 위해 1로 초기화해서 for문을 통해 합을 구한다.

 

2. pow 같은 경우는 num_list의 각 인덱스 값들을 합을 구한 뒤 제곱근을 구하기 위해 for문을 통해 합을 먼저 구해준다.

 

3. pow의 합을 구했으니 제곱근으로 만들어 주기 위해 Math.pow() 함수를 사용해 줬다. 이 함수는 double 형이기 때문에 pow는 int형이 아닌 double형으로 해줘야 한다.

 

4. 마지막으로 제곱근의 합이 원소들의 곱보다 크면 1 그렇지 않으면 0으로 조건식을 해주면 끝이다.

 

밑에 있는 코드는 메모리, 성능, 가독성을 따져 다시 한번 만든 코드다.

if문을 사용하지 않고 한 줄로 정리하기 위해 삼항 연산자를 사용해봤다.

 

        int sum = 1;
        int pow = 0;

        for(int i = 0; i< arr.length; i++){
            sum *= arr[i];
            pow += arr[i];
        }

        return ((pow * pow) > sum) ? 1 : 0;