반응형
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문을 한번만 돌면서 그 안에서 합과 곱을 동시에 계산해주는 방법도 있었다.
반응형
'coding test > Java' 카테고리의 다른 글
프로그래머스 ) lv.0 ) Java ) 이어 붙인 수 (0) | 2023.06.22 |
---|---|
프로그래머스 ) lv.0 ) Java ) 주사위 게임 2 (0) | 2023.06.22 |
프로그래머스 ) lv.0 ) 등차수열의 특정한 항만 더하기 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 조건 문자열 (0) | 2023.06.21 |
프로그래머스 ) lv.0 ) 홀짝에 따라 다른 값 반환하기 (0) | 2023.06.21 |
댓글