코딩테스트

[programmers] JAVA_0단계 등차수열의 특정한 항만 더하기

congs 2024. 6. 18. 12:23

등차수열의 특정한 항만 더하기

 

풀이

- for문을 사용한 방법

Class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        for(int i = 0; i < included.length; i++){
            if(included[i] == true){
                answer += a + i * d;    
            }   
        }
        return answer;
    }
}

 

- ⭐ IntStream을 사용한 방법 

import java.util.stream.IntStream;

class Solution {
    public int solution(int a, int d, boolean[] included) {
        return IntStream.range(0, included.length) // 1
                        .map(idx -> included[idx] ? a + idx * d : 0) // 2
                        .sum(); // 3
    }
}
  1. IntStream.range(0, included.length)
    • IntStream : Java 8에서 도입된 스트림 API, 원시 타입인 int 값을 처리하는 스트림 생성
    • range(0, included.length) 
      • 0부터 included.length - 1까지의 숫자 스트림을 생성
      • = 인덱스 0부터 included.length-1까지의 연속된 정수를 생성
  2. map(idx -> included[idx] ? a + idx * d : 0)
    • map : 스트림의 각 요소에 주어진 함수를 적용 -> 새로운 값을 생성
    • included[idx] ? a + idx * d : 0
      • 삼항 연산자
      • included[idx]가 true인 경우)  등차수열의 idx번째 항 a + idx * d를 계산, 그렇지 않으면 0 반환
  3. sum() : 모든 요소를 합산한 결과 반환