문제
내가 작성한 정답
Arrays.copyOf
import java.util.Arrays;
class Solution {
public int[] solution(int[] num_list) {
int[] answer = Arrays.copyOf(num_list,num_list.length+1);
int num = num_list.length;
int last = num_list[num-1], pre = num_list[num-2];
answer[num] = pre < last ? last-pre : 2*last;
return answer;
}
}
ArrayList
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
ArrayList<Integer> answer = new ArrayList<>();
for(int i : num_list){
answer.add(i);
}
int n = num_list.length, l = num_list[n-1], p = num_list[n-2];
answer.add(l > p? l-p : 2*l);
return answer.stream().mapToInt(i->i).toArray();
}
}
stream
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] num_list) {
return IntStream.concat(
Arrays.stream(num_list),
IntStream.of(num_list[num_list.length-1]>num_list[num_list.length-2]?num_list[num_list.length-1]-num_list[num_list.length-2]:2*num_list[num_list.length-1])
).toArray();
}
}
다른 사람들의 정답
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] num_list) {
// 0부터 시작하여 1씩 증가하는 무한 스트림 생성
return IntStream.iterate(0, i -> i + 1)
// 스트림의 길이를 num_list.length + 1 로 제한 (배열 크기 + 1)
.limit(num_list.length + 1)
// 스트림의 각 요소(인덱스)를 매핑하여 값을 결정
.map(i -> {
// 만약 현재 인덱스가 num_list의 길이와 같다면 (새로운 값을 추가할 위치)
if (i == num_list.length) {
// 마지막 두 요소 비교 후 조건에 따라 새로운 값을 계산
return (num_list[i - 1] > num_list[i - 2] ? num_list[i - 1] - num_list[i - 2] : 2 * num_list[i - 1]);
} else {
// 그렇지 않다면 (기존 배열의 요소)
// 해당 인덱스의 num_list 값을 그대로 사용
return num_list[i];
}
})
// 스트림의 요소들을 int[] 배열로 변환하여 반환
.toArray();
}
}
Share article