코딩테스트/프로그래머스

[프로그래머스] Lv.0 원소들의 곱과 합(Java)

선SEON 2023. 10. 25. 19:37

1. 문제

 

2. 제출 답안

class Solution {
    public int solution(int[] num_list) {
        int product = 1;  // 원소들의 곱을 초기화, 0으로 초기화하면 곱도 0이 되기 때문에 안됨
        int sum = 0;      // 원소들의 합을 초기화

        for (int num : num_list) {
            product *= num;  // 원소들의 곱 계산
            sum += num;      // 원소들의 합 계산

            if (product > sum * sum) {
                return 0;  // 곱이 합의 제곱보다 크면 0 반환
            }
        }

        return 1;  // 모든 원소의 곱이 합의 제곱보다 작으면 1 반환
    }
}

 

3. 다른 풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] numList) {
        return (Arrays.stream(numList).reduce((acc, i) -> acc * i).getAsInt() < Math.pow(Arrays.stream(numList).sum(), 2)) ? 1 : 0;
    }
}

한 줄 풀이에 진심이신 분..!

1. Arrays.stream(numList)를 사용하여 정수 배열을 스트림으로 변환
2. reduce 함수를 사용하여 스트림의 모든 원소를 곱함
    reduce 함수는 람다식 (acc, i) -> acc * i를 사용하여 각 원소를 누적하여 곱셈을 수행
3. getAsInt()를 호출하여 곱의 결과를 정수형으로 변환
4. Arrays.stream(numList).sum()을 사용하여 정수 배열의 모든 원소를 합산
5. Math.pow(Arrays.stream(numList).sum(), 2)를 사용하여 합의 제곱을 계산
6. 조건식을 사용하여 원소들의 곱과 합의 제곱을 비교
    원소들의 곱이 합의 제곱보다 작으면 조건은 true가 되고, 그렇지 않으면 false가 됨.
7,. 조건식의 결과에 따라 1 또는 0을 반환