관리 메뉴

여름 언덕에서 배운 것

[0단계]원소들의 곱과 합 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

[0단계]원소들의 곱과 합

잔뜩 2025. 1. 13. 10:13

 

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

제곱 Math.pow 사용해봄 

첨에 int sum =0; 으로 선언해서 계속 틀리고 있었다

0을 곱하니...계속 0이지...ㅠ  ㅋㅋ

 

** 다른 사람 풀이 

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

/*초깃값 제공*/
import java.util.Arrays;

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

1.Arrays.stream(numList)는 배열을 스트림으로 변환합니다.

2..reduce는 스트림의 원소를 누적하여 단일 결과를 생성하는 연산입니다.

 

  • 초깃값 (optional): 연산을 시작하기 전에 기본값을 제공. ( 초깃값 0이 acc에 초기값으로 설정됩니다. )
  • 누적 함수: 두 값을 입력받아 새로운 결과를 반환하는 함수. (acc와 element를 처리).
  • 결과: 누적된 단일 값.
  • 사용 예시
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // reduce 사용: 모든 값을 더함
        int sum = Arrays.stream(numbers)
                        .reduce(0, (acc, num) -> acc + num);

        System.out.println(sum);  // 출력: 15
    }
}

/*초깃값 없는 예제*/
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // 초깃값 없이 reduce 사용
        int product = Arrays.stream(numbers)
                            .reduce((acc, num) -> acc * num)
                            .orElse(0);  // 스트림이 비어 있으면 0 반환

        System.out.println(product);  // 출력: 120
    }
}

 

3. .sum()은 스트림의 모든 원소를 더한 값을 반환합니다.

4. Math.pow를 이용해 합계의 제곱을 구합니다.

 

728x90