[Java] 마지막 두 원소

peace w·2023년 10월 4일
0

프로그래머스

목록 보기
18/25

문제

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

  • 제한사항

    • 2 ≤ num_list의 길이 ≤ 10
    • 1 ≤ num_list의 원소 ≤ 9

입출력 예

문제 풀이

  • num_list.length 보다 원소의 갯수가 하나 더 많은 int 배열 answer를 만들고, for문을 이용해 num_list의 원소를 그대로 받아왔다.
  • 가독성을 위해서 마지막 원소, 마지막 원소에서 그 전 원소last, lastb라는 변수에 할당한다.
  • 배열 answer 의 길이가 i라고 할 경우 배열 answer 의 원소는 answer[0]부터 answer[i-1]까지 있다.
    따라서 answer의 마지막 원소는 answer[num_list.length]라고 작성해야한다.
class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length+1];
        
        int last = num_list[num_list.length - 1];  // 마지막 원소
        int lastb = num_list[num_list.length - 2];  // 마지막 원소에서 그 전 원소

        for(int i=0; i<num_list.length; i++){
            answer[i] = num_list[i];
        }
        if (last > lastb) {
            answer[num_list.length] = last - lastb;
        } else {
            answer[num_list.length] = last * 2;
        }
        
        return answer;
    }
}

다른 사람의 코드를 참고하니 ArrayList 를 사용하면 add() 메소드를 통해 쉽게 원소를 추가할 수 있었다.

import java.util.*;

class Solution {
    public List solution(int[] num_list) {
        List<Integer> answer = new ArrayList<>();
        
        int last = num_list[num_list.length - 1];  // 마지막 원소
        int lastb = num_list[num_list.length - 2];  // 마지막 원소에서 그 전 원소
        
        for(int i = 0; i < num_list.length; i++){
            answer.add(num_list[i]);
        }
        if(last > lastb){
            answer.add(last - lastb);
        } else {
            answer.add(last * 2);
        }
        return answer;
    }
}
profile
더 성장하자.

0개의 댓글