등차수열의 특정한 항만 더하기
풀이
- 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
}
}
- IntStream.range(0, included.length)
- IntStream : Java 8에서 도입된 스트림 API, 원시 타입인 int 값을 처리하는 스트림 생성
- range(0, included.length)
- 0부터 included.length - 1까지의 숫자 스트림을 생성
- = 인덱스 0부터 included.length-1까지의 연속된 정수를 생성
- map(idx -> included[idx] ? a + idx * d : 0)
- map : 스트림의 각 요소에 주어진 함수를 적용 -> 새로운 값을 생성
- included[idx] ? a + idx * d : 0
- 삼항 연산자
- included[idx]가 true인 경우) 등차수열의 idx번째 항 a + idx * d를 계산, 그렇지 않으면 0 반환
- sum() : 모든 요소를 합산한 결과 반환
'코딩테스트' 카테고리의 다른 글
[programmers] JAVA_0단계 이어 붙인 수 (0) | 2024.06.18 |
---|---|
[programmers] JAVA_0단계 주사위 게임 2 (0) | 2024.06.18 |
[programmers] JAVA_0단계 flag에 따라 다른 값 반환하기 (0) | 2024.06.18 |
[programmers] JAVA_0단계 코드 처리하기 (1) | 2024.06.17 |
[programmers] JAVA_0단계 공배수 (1) | 2024.06.17 |