문제

정수 리스트 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합니다.

코드

function solution(num_list) {
  const [a, b] = [...num_list].reverse();
  console.log(a, b); // 6, 1
  console.log([...num_list]); // [2, 1, 6, 5]

  return [...num_list, a > b ? a - b : a * 2];
}

JS 함수

reverse()

  • 배열의 순서를 반전시키는 함수이다.
  • 함수를 호출하면 배열의 원소들이 순서대로 뒤집힌다.
  • 기존 배열을 변형시키고, 변형된 배열을 반환한다.

예제

const array = [1, 2, 3, 4, 5];
const newArray = Array.reverse();

console.log(array); // [5, 4, 3, 2, 1] - 원본 배열이 변경됨
console.log(newArray); // [5, 4, 3, 2, 1] - 변형된 배열을 변경됨
  • 예제에서 reverse()를 호출하면 array의 순서가 반전되어 [5, 4, 3, 2, 1]이 된다.
  • newArrayarray의 참조를 가지고 있으므로 동일한 값을 가지고 있다.
  • 주의할 점은 reverse()는 원본 배열을 직접 수정하므로, 필요에 따라 복사본을 만들어 작업해야 할 수 있다.

코드 해설

  • reverse() 배열을 뒤집는다.
  • [a, b]는 뒤집힌 배열에서 0,1 인덱스를 불러온다.
  • 새로운 배열에 먼저 기존 배열을 먼저 풀어주고, 위에서 뒤집은 배열의 0,1번째 인덱스를 비교한다.
  • a값이 크면 a-b 반대일 경우 a*2 계산식을 마지막 배열 인덱스에 추가한다.