마지막 두 원소
문제 설명
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return 하도록 solution 함수를 완성해 주세요.
입출력 예
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) {
let prev = num_list[num_list.length - 2];
let next = num_list[num_list.length - 1];
next > prev ? num_list.push(next - prev) : num_list.push(next * 2)
return num_list;
}
삼항 연산자로 간단하게 처리했다.
다른 사람의 풀이
function solution(num_list) {
const [a, b] = [...num_list].reverse();
return [...num_list, a > b ? (a-b) : a*2];
}
num_list를 reverse에서 마지막 두 원소를 구조 분해 할당으로 변수를 지정해 사용한 점이 인상 깊었다. 그리고 배열에 push 하는 것이 아니라 스프레드 연산자를 이용해서 원소를 추가해 주었다는 점도!
구조 분해 할당
만약 배열의 첫 번째 요소를 가져와서 변수에 담고 싶을 때, 어떻게 하면 될까요? 보통 아래와 같은 방법을 먼저 떠올릴 수 있습니다.
const array = [1, 2, 3];
const first = array[0];
console.log(first); // 1
위 방법 말고, 배열 구조 분해 할당을 이용하여 아래와 같이 작성할 수도 있습니다.
const array = [1, 2, 3];
const [first] = array;
console.log(first); // 1
array 배열에 담긴 것을 구조 분해 할당으로 first라는 변수에 담고자 합니다. 단, first 에는 array의 element 중 맨 첫 번째 1 만 담기게 됩니다.
출처 https://chanhuiseok.github.io/posts/js-10/
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.05.15 Programmers_배열 만들기2 (0) | 2023.05.15 |
---|---|
[TIL] 2023.05.14 Programmers_문자열 여러 번 뒤집기 (0) | 2023.05.14 |
[TIL] 2023.05.12 Programmers_코드 처리하기 (0) | 2023.05.13 |
[TIL] 2023.05.11 Programmers_부분 문자열 이어 붙여 문자열 만들기 (0) | 2023.05.11 |
[TIL] 2023.05.10 Programmers_등차수열의 특정한 항만 더하기 (0) | 2023.05.10 |
댓글