티스토리 뷰

문제출처

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

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

 

입출력 예

num_list result
[ 2, 1, 6 ] [ 2, 1, 6, 5 ]
[ 5, 2, 1, 7, 5 ] [ 5, 2, 1, 7, 5, 10 ]

 

소스

import java.util.*;
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.copyOf를 활용하지않고, 반복문을 통해 answer배열에 대입했다.

  for(int i=0; i<num_list.length; i++){
            answer[i] = num_list[i];
      }


2회독중 배열복사가 떠올라서 활용하여 문제를 풀어봤습니다. 반복문을 사용한것보다 코드가 더 간결해졌습니다.