본문 바로가기

코테/프로그래머스

[코딩 기초 트레이닝] 뒤에서 5등 위로

728x90

[코딩 기초 트레이닝] 뒤에서 5등 위로

문제 링크

구분

코딩테스트 연습 > 코딩 기초 트레이닝

풀이 요약

배열을 오름차 순으로 정렬 후 가장 작은 수 5자리를 제외한 모든 수를 출력하는 문제

나의 풀이

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

주어진 배열을 오름차순으로 정렬하기 위해 sort 메서드를 이용했습니다.

 

주어진 배열 num_list가 [12, 4, 15, 46, 38, 1, 14, 56, 32, 10] 라고 할때 ,

sort((a,b)⇒a-b) 는 일반적으로 아래처럼 작동합니다.

 

반환값이 음수 → a가 b보다 앞에 위치

반환값이 양수 → a가 b보다 뒤에 위치

반환값이 0 → a와 b의 순서를 비교하지 않음

 

예를들어, a=12, b=4 이고 둘을 비교하면 12-4=8

즉, 양수이기 때문에 a인 12가 b인 8보다 뒤에 위치 하게 되어

[4, 12, 15, 46, 38, 1, 14, 56, 32, 10] 처럼 위치가 바뀝니다.

 

a=12, b=15 이고 a-b 의 값은 -3인 음수 이므로 12가 15보다 앞에 위치 합니다.

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

 

a=15, b=46 a-b= -31 (음수) 이므로 a인 15가 b인 46보다 앞에 위치합니다.

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

 

위 과정을 배열의 모든 요소가 오름차순으로 정렬될 때까지 반복하게됩니다.

또한, slice 메서드를 활용하여 인덱스 5번부터 배열 끝까지의 요소를 반환했습니다.

728x90