[코딩테스트] JavaScript/[코테] 프로그래머스

[프로그래머스 / JS 코테] Lv.0 / 181927 : 마지막 두 원소

jini-dev 2025. 1. 7. 09:00
SMALL

마지막 두 원소(링크)

문제 설명
정수 리스트 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]

입출력 예 #1

  • 마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.

입출력 예 #2

  • 마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.

 

문제 풀이

배열의 마지막 원소와 그 전 원소를 slice로 복사하여 변수로 지정한다.

마지막 원소가 그 전 원소보다 크면 배열의 끝에 마지막원소 - 그 전 원소 값을 push하고,

작으면 배열의 끝에 마지막 원소의 2배 값을 push하여 반환한다.

function solution(num_list) {
    const lastNum = num_list.slice(-1); // 마지막 원소 값
    const prevNum = num_list.slice(-2,-1); // 마지막 1개 전 원소 값
    if(lastNum > prevNum){
    num_list.push(lastNum - prevNum)
    }else{
    num_list.push(lastNum * 2)
    }
    return num_list;
}

 

slice로 복사하는 방법도 있지만 아래와 같이 변수를 length를 이용하여 값을 추출하는 방법도 있다.

const lastNum = num_list[num_list.length-1];
const prevNum = num_list[num_list.length-2];

 

LIST