저장을 습관화
프로그래머스 LV.0 마지막 두 원소 본문
프로그래머스 LV.0 마지막 두 원소
https://school.programmers.co.kr/learn/courses/30/lessons/181927
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
LV.0 마지막 두 원소
2. 문제 설명
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
3. 제한 사항
- 2 ≤ num_list의 길이 ≤ 10
- 1 ≤ num_list의 원소 ≤ 9
4. 예시
num_list | result |
[2, 1, 6] | [2, 1, 6, 5] |
[5, 2, 1, 7, 5] | [5, 2, 1, 7, 5, 10] |
5. 기본 제공 코드
function solution(num_list) {
var answer = [];
return answer;
}
6. 제출한 내 답
const solution = (num_list) => {
if (num_list.reverse()[0] > num_list[1]) {
let push = num_list[0] - num_list[1];
num_list.unshift(push);
return num_list.reverse();
} else {
let push = num_list[0] * 2;
num_list.unshift(push);
return num_list.reverse();
}
};
6-2. VSC에 작성한 내용
const solution = (num_list) => {
if (num_list.reverse()[0] > num_list[1]) {
// console.log(num_list[0]);
// console.log(num_list[1]);
let push = num_list[0] - num_list[1];
// console.log(push);
// return num_list.reverse().push(push);
num_list.unshift(push);
return num_list.reverse();
} else {
// console.log(num_list[0]);
// console.log(num_list[1]);
let push = num_list[0] * 2;
// console.log(push);
num_list.unshift(push);
return num_list.reverse();
}
};
// 테스트
console.log(solution([2, 1, 6]));
console.log(solution([5, 2, 1, 7, 5]));
7. 특이사항
7-1. .reverse()
배열 메소드 reverse()는 한번 적용하면 그대로 배열이 고정된다는 것을 다시금 알게 되었다.
다른 메소드처럼 그때 잠깐 적용된 상태로 결과를 출력하는게 아닌, 그 상태 그대로 굳어진다는 것을
따라서 만약 배열 num_list가 [5, 2, 1, 7, 5] 일때
if (num_list.reverse()[0] > num_list.reverse()[1]) 이라고 적으면
저 한 줄을 처리하는 동안 num_list는 [5, 7, 1, 2, 5], [5, 2, 1, 7, 5] 와 같이 두 번 뒤집히게 된다.
7-2. .push()
return 배열.push('값') 처럼 배열에 삽입 메소드를 붙인 그대로 반환하면
이는 push가 적용된 배열의 길이를 반환하게 된다.
const solution = (num_list) => {
if (num_list.reverse()[0] > num_list[1]) {
let push = num_list[0] - num_list[1];
return num_list.reverse().push(push);
} else {
let push = num_list[0] * 2;
return num_list.reverse().push(push);
}
};
// 테스트
console.log(solution([2, 1, 6])); // 4
console.log(solution([5, 2, 1, 7, 5])); // 6
따라서 다시 원본 배열에 끝에 새로운 수를 삽입하고 싶다면(push를 사용하고 싶다면)
뒤집고, 삽입하고, 리턴해 주어야한다.
...
let push = num_list[0] - num_list[1];
num_list.reverse()
num_list.push(push)
return num_list
...
7-3. .unshift()
뒤집고, 삽입하고, 리턴하는 것이 마음에 들지 않는다면
push와 반대 방법, 즉 배열의 맨 앞에 삽입하는 unshift를 사용하면 된다.
reverse메소드는 return과 함께 적용하여도 문제가 없으므로
...
let push = num_list[0] - num_list[1];
num_list.unshift(push)
return num_list.reverse()
...
8. 다른 사람이 작성한 답
8-1.
function solution(num_list) {
const [a, b] = [...num_list].reverse();
return [...num_list, a > b ? (a-b):a*2];
}
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.0 n개 간격의 원소들 (0) | 2023.09.16 |
---|---|
프로그래머스 LV.0 n보다 커질 때까지 더하기 (0) | 2023.09.16 |
프로그래머스 LV.0 배열 만들기 1 (0) | 2023.09.15 |
프로그래머스 LV.0 배열의 길이에 따라 다른 연산하기 (0) | 2023.09.15 |
프로그래머스 LV.0 A 강조하기 (0) | 2023.09.15 |