[프로그래머스-기초] 뒤에서 5등 위로

JiEun·2023년 5월 14일
0

코테/코플릿

목록 보기
12/56
post-thumbnail

뒤에서 5등 위로

문제 설명

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

제한사항

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

입출력 예

num_listresult
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10][15, 32, 38, 46, 56]

입출력 예 설명

입출력 예 #1
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10]를 정렬하면 [1, 4, 10, 12, 14, 15, 32, 38, 46, 56]이 되고, 앞에서 부터 6번째 이후의 수들을 고르면 [15, 32, 38, 46, 56]가 됩니다.

💻 내가 작성한 코드

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

🤪 헤맸던 부분

sort와 slice를 이용해 해결하면 되겠구나 까지 생각했다.
아무런 조건 없이 sort로 정렬를 하려고 하니
내가 원하는 방식으로 나오지 않았다.

sort는 매개 변수에 함수를 넣어주지 않으면 유니코드 순서에 따라서 값을 정렬한다고 한다.

compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 유니 코드 코드 포인트 순서로 문자열을 비교하여 정렬됩니다.

예를 들어 "바나나"는 "체리"앞에옵니다.
숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니 코드 순서에서 "9"앞에옵니다.

-mdn 설명란

그래서 [12, 4, 15, 46, 38, 1, 14, 56, 32, 10]라는 배열이 주어줬을 때
[1, 10, 12, 14, 15, 32, 38, 4, 46, 56]를 반환한다.

오름차순으로 배열을 나열하고 싶을 때 비교하는 로직을 담고 있는 함수를 매개 변수로 넣어주면 된다.

sort((a, b) => a - b) 로 작성해 주면 원하는 오름차순으로 정렬되는 것을 알 수 있다.

이쯤 되면 궁금해지는게 있다.

그럼 내림차순은 반대로하면 되는걸까?

그렇다.
비교 로직을 sort((a, b) => b - a) 반대로 작성해 주면 된다!

sort()가 배열만 정렬해주는게 아닌 숫자, 문자열, 객체도 정렬이 가능하다는 것을 이번 기회를 통해 알게 되었다.


✏️ 마치며

이렇게 메서드 하나를 알아가면서 내가 다룰 수 있는 코드도 늘어나고 다른 사람의 코드를 보고 이해하는 능력도 같이 기를 수 있는거 같다.

코딩 테스트 초반 부터 할 껄 그랬다.
입문이 제일 낮은 난이도인줄 알았다... 따흑...😂

참고

https://hianna.tistory.com/409

profile
💻 프론트엔드를 목표로 성장 중! (알아봤던 내용 등을 정리하기)

0개의 댓글