Algorithm Study

[Java Algorithm] 프로그래머스 Lv.0 _ 등차수열의 특정한 항만 더하기

microsaurs 2024. 10. 31. 13:40

[문제]

두 정수 a, d 와 길이가 n인 boolean 배열 included가 주어집니다.
첫째항이 a, 공차가 d인 등차수열에서 Included[i]가 i + 1 항을 의미할 때,
이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해주세요.

 

[Algorithm]

반복문에서 조건문을 사용하여 배열의 해당 인덱스가 true 경우의 등차수열 해당 항을 계산해서 더해주기

 

[Code]

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]) {
                answer += a + (i * d);
                continue;
            }
        }
        return answer;
    }
}

 

[+ 다른 사람 풀이]

import java.util.stream.IntStream;

class Solution {
    public int solution(int a, int d, boolean[] included) {
        return IntStream.range(0, included.length).map(idx -> included[idx]?a+(idx*d):0).sum();
    }
}

 

[+ Plus]

* Java Stream

: 데이터 소스를 추상화하여 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되어 코드의 재사용성을 높임

✔️ 데이터 소스를 변경하지 않음

✔️ 일회용

✔️ 작업을 내부 반복으로 처리

 

* IntStream

: 지정된 범위의 연속된 정수를 스트림으로 생성하여 반환

ex. IntStream.range(a, b).map ~

✔️ range는 end를 포함하지 않고, rangeClosed는 end를 포함

 

 

💡 stream 활용에 익숙해지기

한 줄에 끝내다니 천재 ~ ㅜ