문제 설명
정수 리스트 num_list가 주어질 때,
마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을
마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
나의 풀이 :
function solution (num_list) {
return num_list[num_list.length - 1] > num_list[num_list.length - 2]
? num_list.concat(num_list[num_list.length - 1] - num_list[num_list.length - 2])
: num_list.concat(num_list[num_list.length - 1] * 2);
}
틀린 건 아닌데 작성하면서도 가독성이 참 나쁘다고 생각했다.
그런 뒤 다른 사람들의 풀이를 봤는데, 굉장히 감탄한 코드가 2개 있었다.
(1)
function solution (num_list) {
const [a, b] = [...num_list].reverse();
return [...num_list, a > b ? (a - b) : a * 2];
}
(2)
const solution = n => [...n, n.at(-1) > n.at(-2) ? n.at(-1) - n.at(-2) : n.at(-1) * 2];
2가지 다 전개 연산자를 사용한 풀이다.
나는 아직까지 전개 연산자를 내 것처럼 활용하지 못하는 건 둘째 치고...부끄럽지만 아예 전개 연산자를 방법론으로 떠올리지도 못 하는 단계여서,
프로그래머스 기초 트레이닝을 하는 내내 다른 사람의 풀이를 보면서 많이 배우게 된다.
코딩 테스트를 위한 연습으로도 좋지만 자바스크립트와 ES6+을 다루는 방법을 배우고 시야를 넓히는 데 도움이 많이 되는 것 같다.
(1) at()
at() 메소드는 원하는 인덱스의 요소를 반환한다.
사용 방식 :
at(찾으려는 인덱스)
당연하지만 인덱스니까 매개변수에는 정수 값을 넣어야 한다.
음수를 넣을 경우 배열의 뒤에서부터 인덱스를 센다.
배열의 맨 마지막 요소를 가져오고 싶을 때
array[array.length - 1]을 사용하는 것보다 array.at(-1)을 사용하면 훨씬 더 간편하다.
참고로 배열에 없는 인덱스를 매개변수로 넣을 경우 undefined를 반환한다.
(2) reverse()
reverse() 메소드는 단어 뜻 그대로 배열의 순서를 뒤집어준다.
reverse()는 매개변수를 필요로 하지 않고 그냥 이대로 사용한다.
'코딩테스트 > 프로그래머스 기초 트레이닝' 카테고리의 다른 글
[Javascript] 0 떼기 (0) | 2023.06.06 |
---|---|
[Javascript] for 반복문에서 i를 2씩 증가하는 법 (0) | 2023.06.06 |
[Javascript] l로 만들기 (0) | 2023.06.05 |
[Javascript] 배열의 원소만큼 추가하기 - new Array(), fill() (0) | 2023.05.27 |
[Javascript] 테스트에서 사용한 배열(Array) 메소드 정리 (1) - join() reduce() sort() splice() (0) | 2023.05.27 |
[Javascript] 글자 이어 붙여 문자열 만들기 (0) | 2023.05.22 |
[Javascript] 테스트에서 사용한 문자열 객체 메소드 정리 - replaceAll() includes() charAt() (0) | 2023.05.22 |
[출력 문제] 자바스크립트로 테스트 입력값 받기 (Node.js) (0) | 2023.05.18 |