본문 바로가기
coding test/Java

프로그래머스 ) lv.0 ) Java ) 원소들의 곱과 합

by heidish 2023. 6. 22.
반응형

 

 

 

 

 

 

 

SOL )

import java.util.Arrays;

class Solution {
    public int solution(int[] num_list) {
        // 모든 원소들의 합의 제곱
        int rs_A = (int) Math.pow(Arrays.stream(num_list).sum(), 2);
        
        // 모든 원소들의 곱
        int rs_B = 1;
        // Arrays.stream(num_list).forEach(n -> rs_B * n); // 실패
        // rs_B = num_list.forEach(n -> rs_B * n); // 실패
        for (int n : num_list) {
            rs_B *= n;
        }
        
        return rs_A > rs_B ? 1 : 0;
    }
}

모든 원소들의 합을 구할 때 Stream 을 사용했기에,

곱을 구할때 주석처리된 것과 같이 forEach 를 사용해보고 싶었는데, 안되더라,,

왜 안되는지 아직까지 잘 모르겠어서 우선 포스팅을 올리고 람다식과 Stream 에 대해 더 알아보려 한다.

 

 

 

 

 

OTHER SOL )

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;
    }
}

마찬가지로 stream 과 람다식을 활용한, 더 잘 활용한 예시이고

 

 

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

        int sum  = 0;
        int mult = 1;

        for(int i : num_list) {
            sum += i;
            mult *= i;
        }

        answer = Math.pow(sum,2) > mult ? 1 : 0;

        return answer;
    }
}

for문을 한번만 돌면서 그 안에서 합과 곱을 동시에 계산해주는 방법도 있었다.

 

 

 

 

반응형

댓글