본문 바로가기
  • 커뮤니티
  • 블로그
  • 북마크
Front-end/Javascript

[Javascript]코딩테스트 프로그래머스 "뒤에서 5등까지" 풀이

by 빽짱구 2024. 4. 25.

코딩테스트 연습 > 코딩 기초 트레이닝 > 뒤에서 5등까지

문제 설명

정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

제한사항

- 6 ≤ num_list의 길이 ≤ 30 
- 1 ≤ num_list의 원소 ≤ 100

 

입출력 예

num_list
[12, 4, 15, 46, 38, 1, 14]

result
[1, 4, 12, 14, 15]

 

입출력 예 설명

입출력 예 #1

- [12, 4, 15, 46, 38, 1, 14]를 정렬하면 [1, 4, 12, 14, 15, 38, 46]이 되고, 앞에서 부터 5개를 고르면 [1, 4, 12, 14, 15]가 됩니다.

 

반응형

 

문제 풀이

function solution(num_list){
    return num_list.sort((a,b) => a - b).slice(0,5);
}

// 테스트
const num_list = [10, 5, 8, 2, 7, 3, 9, 1, 6, 4]
console.log(solution(num_list); // [1, 2, 3, 4, 5]

 

풀이 설명

1. num_list.sort((a, b) => a - b) : sort() 메서드를 사용하여 배열을 오름차순으로 정렬합니다. 이때, 비교 함수 (a, b) => a - b를 사용하여 숫자를 비교합니다. 이 함수는 a가 b보다 작으면 음수를 , 같으면 0을, 크면 양수를 반환하여 정렬합니다.

 

2. slice(0, 5) : 정렬된 배열에서 처음부터 5개의 요소를 추출하여 새로운 배열을 만듭니다.

따라서 이 함수는 가장 작은 5개의 수를 오름차순으로 담은 배열을 반환합니다.

- 첫 번째 매개변수는 시작 인덱스를 나타내며, 해당 인댁스의 요소를 포함합니다.

- 두 번째 매개변수는 끝 인덱스를 나타내며, 해당 인덱스의 요소는 포함하지 않습니다.

 

따라서 slice(0. 5)는 배열의 첫 번째 요소부터 다섯 번째 요소까지(다섯 번째 요소는 제외)의 요소를 포함하는 새로운 배열을 반환합니다.

 

참고

sort()

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

slice()

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

 

Array.prototype.slice() - JavaScript | MDN

slice() 메서드는 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.

developer.mozilla.org