No sweet without sweat

[Level 1 - 내적] : IntStream.range 본문

프로그래머스

[Level 1 - 내적] : IntStream.range

Remi 2024. 3. 3. 13:57
728x90
반응형

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]* b[n-1] 입니다. (n은 a, b의 길이)

 

문제는 아주 간단합니다.

 

  int answer = 0;

        for (int i = 0; i < a.length; i++) {
            answer += a[i] * b[i];
        }
   return answer;

 

 

하지만 IntStream.range를 통해 편하게 할  수 있답니다..!

 

 public int solution(int[] a, int[] b) {
        return IntStream.range(0, a.length).map(index -> a[index] * b[index]).sum();
    }

 

  1. IntStream.range(start, end):
    • IntStream은 기본 타입 int에 대한 스트림을 제공하는 Java 8에서 소개된 인터페이스입니다.
    • range 메서드는 시작 값(start)부터 끝 값(end) 전까지의 연속된 정수 스트림을 생성합니다. 여기서 끝 값은 포함되지 않습니다.
    • 예를 들어, IntStream.range(0, 5)는 0부터 4까지의 정수 스트림을 생성합니다.
  2. map(IntUnaryOperator mapper):
    • map 메서드는 스트림의 각 요소에 함수를 적용하여 새로운 스트림을 생성합니다.
    • 이 코드에서는 map을 사용하여 IntStream의 각 인덱스에 대해 배열 a와 b의 요소를 곱한 값을 생성합니다.
    • index -> a[index] * b[index] 람다 표현식은 인덱스를 받아들여 a[index] * b[index]를 계산합니다.
728x90
반응형
Comments