프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 마지막 두 원소(Java)

Sigfriede 2023. 5. 5. 01:40

  문제 설명

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

 

  제한사항

  • 2 <= num_list의 길이 <= 10
  • 1 <= num_list의 원소 <= 9

 

  입출력 예

num_list result
[2, 1, 6] [2, 1, 6, 5]
[5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10]
class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length + 1];
        int last = 0;
        if (num_list[num_list.length - 1] > num_list[num_list.length - 2]) {
            last = num_list[num_list.length - 1] - num_list[num_list.length - 2];
        } else {
            last = num_list[num_list.length - 1] * 2;
        }
        
        for (int i = 0; i < num_list.length; i++) {
            answer[i] = num_list[i];
        }
        answer[answer.length - 1] = last;
        return answer;
    }
}

  answer 배열을 생성합니다. num_list 배열의 마지막 원소의 값을 조건에 맞게 계산한 값인 원소를 추가해야하므로, num_list의 길이에서 한 자리를 추가합니다. 마지막 원소가 될 last 변수를 생성합니다.

  만약 num_list의 마지막 원소가 그전 원소보다 크다면 last에 마지막 원소에서 그전 원소를 뺀 값을 할당합니다. 조건을 충족하지 못하면, last에 마지막 원소를 두 배한 값을 할당합니다.

  for문이 num_list만큼 순회합니다. answer의 i번째 인덱스에 num_list의 [i]번째 인덱스를 할당합니다. 배열을 복사한 것입니다. answer의 마지막 원소 자리에는 앞선 if문에서 구한 last 변수 값을 할당합니다.