문제 설명

정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

 

Solution 1) 내 풀이
import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = Arrays.copyOf(num_list, num_list.length + 1);
        
         if (num_list[num_list.length-1] > num_list[num_list.length-2]) {
            answer[answer.length-1] = (num_list[num_list.length-1] - num_list[num_list.length-2]);
        } else {
            answer[answer.length-1] = (num_list[num_list.length-1] * 2);
        }
        
        return answer;
    }
}
기존 배열에 요소 하나가 추가 돼야 하는 문제 였다.

반복문으로 기존의 요소를 추가 후 새로운 요소를 추가하게 만들 수도 있었다.
하지만 다른 방식은 없을까 해서 찾아보니 Arrays.copy 메서드를 찾아낼 수 있었다.

public static int[] copyOf(int[] original, int newLength)의 형태로 작성 되며,
(예시에서 int[] answer = Arrays.copyOf(num_list, num_list.length + 1); 부분)

- original : 복사할 원래 배열
- newLenghth : 새 배열의 길이

형태로 사용 됐다.

 

 

+ Recent posts