문제 설명
정수 리스트 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] |
목적: num_list가 있는데
마지막 원소 > 그전 원소 -> 마지막 원소 - 그전 원소 = 값 추가
마지막 원소 < 그전 원소 -> 마지막 원소 * 2 = 값 추가
function solution(num_list) {
// 1. 마지막 원소 추출
last_number = num_list[num_list.length - 1];
// 2. 그전 원소 추출
second_number = num_list[num_list.length - 2];
if (last_number > second_number) {
num_list.push(last_number - second_number)
} else {
num_list.push(last_number * 2)
};
return num_list;
}
나의 방식
1. 마지막 원소 추출
2. 그전 원소 추출
3. if 마지막 원소 > 그전 원소 -> 마지막 원소 - 그전 원소 해라
4. 그 값을 num_list 배열 마지막에 추가
5. else 마지막 원소 < 그전 원소 -> 마지막 원소 * 2 해라
6. 그 값을 num_list 배열 마지막에 추가
마지막 원소 추출...
num_list.length (배열 길이)
ex) [1, 2, 3, 4, 5]
→ 0 1 2 3 4 마지막 인덱스는 배열 길이 5 - 1 = 4
num_list.length - 1
case 1 다른 사람의 코드
function solution(num_list) {
const [a, b] = [...num_list].reverse();
return [...num_list, a > b ? (a-b):a*2];
}
내 코드와 차이점
스프레드 문법을 사용해 삼항연 연산자를 활용하여, 배열 처리와 조건 분기를 한 줄로 간결하게 표현했다.
case 2 다른 사람의 코드
function solution(num_list) {
const [sec, last] = num_list.slice(-2);
last > sec ? num_list.push(last - sec) : num_list.push(last * 2);
return num_list;
}
내 코드와 차이점
배열 뒤에서 2개를 slice로 가져오고, 구조분해로 변수에 담은 뒤, 삼항연산자로 조건 처리한 코드
느낀점
if문으로 조건을 나누는 방식도 좋지만, 배열의 값을 간단히 추출한 뒤 삼항 연산자를 활용하면 더 간결하게 표현할 수 있다는 것을 알게 되었다.
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 두 수의 나눗셈 (0) | 2026.04.22 |
|---|---|
| [프로그래머스] 두 수의 차 구하기 (0) | 2026.04.22 |
| [프로그래머스] 뒤집힌 문자 (0) | 2026.04.10 |
| [프로그래머스] 피자 나눠 먹기 (2) (0) | 2026.04.05 |
| [프로그래머스] 피자 나눠 먹기 (1) (0) | 2026.04.05 |