[알고리즘문제풀기] 마지막 두 원소

silver's avatar
Apr 03, 2025
[알고리즘문제풀기] 마지막 두 원소

문제

내가 작성한 정답

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

silver