🧑💻
마지막 두 원소
February 20, 2024
문제
정수 리스트 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]이 된다. newArray는array의 참조를 가지고 있으므로 동일한 값을 가지고 있다.- 주의할 점은
reverse()는 원본 배열을 직접 수정하므로, 필요에 따라 복사본을 만들어 작업해야 할 수 있다.
코드 해설
- reverse() 배열을 뒤집는다.
- [a, b]는 뒤집힌 배열에서 0,1 인덱스를 불러온다.
- 새로운 배열에 먼저 기존 배열을 먼저 풀어주고, 위에서 뒤집은 배열의 0,1번째 인덱스를 비교한다.
- a값이 크면 a-b 반대일 경우 a*2 계산식을 마지막 배열 인덱스에 추가한다.