문제
내가 작성한 정답
class Solution {
public int solution(int[] num_list) {
int o = 0, e = 0;
for(int i = 0; i<num_list.length; i++){
if(i%2==0) o += num_list[i];
else e += num_list[i];
}
return o>=e? o: e;
}
}
다른 사람들의 정답
import java.util.stream.IntStream;
class Solution {
public int solution(int[] num_list) {
return Integer.max(IntStream.iterate(0, i -> i < num_list.length, i -> i + 2)
.map(i -> num_list[i])
.sum(), IntStream.iterate(1, i -> i < num_list.length, i -> i + 2)
.map(i -> num_list[i])
.sum());
}
}
IntStream.iterate(int 초기값, IntUnaryOperator 다음 요소를 생성하는 함수)
IntStream iterate(int seed, Predicate<Integer> hasNext, IntUnaryOperator f)
: seed → 초기값
: hasNext → (Optional) 반복을 계속할지 여부를 결정하는 조건(종료 조건).
: f → 각 단계에서 적용할 변환 함수.
주어진 초기값과 다음 값을 생성하는 함수를 사용하여 무한한 정수 스트림을 생성한다. 이 메서드는 주로 반복적인 수열을 생성할 때 유용하다
IntStream.iterate(0, i -> i + 2) // 초기값0, i에 2를 더하는 함수 무한으로...
.limit(num_list.length / 2) // 스트림의 길이를 제한
.forEach(System.out::println); // 각 요소를 출력
Share article