[프로그래머스 스쿨] 코딩테스트 연습 기초 - 원소들의 곱과 합

김현정·2025년 3월 5일
0

문제 설명

정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

입출력 예 설명

입출력 예 #1
모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.

입출력 예 #2
모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.

기본 코드

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        return answer;
    }
}

내가 구현한 코드

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

문제 해결

원소들의 곱의 값 product로 변수를 설정하고, 원소들의 합의 제곱은 원소들의 합을 sum변수, 합의 제곱의 변수 sumSquare을 설정하였다. product와 sum값을 구하기 위해서 for문으로 값을 구하고 for문 밖에서 sumSquare값을 Math.pow() 함수값을 활용해 구하였다.
if문으로 product값이 sumSquare보다 작을 때는 1을 반환하고, 클 때는 0을 반환하게 설정하였다.
코드 실행을 눌렀을 때는 한 개는 통과지만 한 개는 결과값이 다르다고 하여 이것저것 찾아보다가 안되어서 튜터님게 질문하러 갔다. 정답은 double product = 0; 부분을 잘못 초기화 한 것이다. 곱하기에서 product가 0으로 시작하면 아무리 다른 수를 곱하여도 0이 되기에 결과값이 다르게 나온것이다. 그렇기에 double product = 1;로 설정해야한다.

알게된 점

  1. 초기화하는 변수값을 상황에 따라서 0으로 할지 1로 할지 다른 수로 할지 잘 판단하기!
    (더하기 같은 경우는 0이 맞지만 곱하기나 나누기는 1이 맞다.)
  2. Math.pow()는 double을 사용하기에 자료형을 맞춰주기!

0개의 댓글