개발

[코테] 프로그래머스 뒤에서 5등 위로

woojin06 2025. 4. 10. 10:44

요새 심심해서 개념 정리 다시 할겸 프로그래머스 레벨 0부터 차근차근 다시 풀고있던 중 문제가 발생했다.

 

바로 https://school.programmers.co.kr/learn/courses/30/lessons/181852

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

해당 문제인데 어디가 막혔냐

 

function solution(num_list) {
    num_list.sort();
    return num_list[5:];
}

처음 코드가 이렇게 생겨먹었다. 왜 그랬는진 모르겠는데 파이썬으로 풀면 문제 될 내용이 없는데 나는 JS가 주 언어다.

js에서 이렇게 하니 당연히 오류가 나지 근데 그것도 모르고 5분동안 뭐가 문젠지 멍했다가 고민을 해보니 나는 js 언어로 푸는중이었다.

 

그렇다면 뭐가 문제인걸까 알아보자.

일단 저 [n : ] 문법은 파이썬이 가지고 있는 문법이다. 그렇기에 해당 내용을 .slice(5) 로 고쳐줬다

 

 이렇게 수정했는데 정렬 값이 다른거였다 코드를 다시 확인하니 js 가 하는 .sort() 는 문자열을 기준으로 한다 

쉽게 말해서 

[10, 2, 1].sort(); // -> [1, 10, 2] ❌

이렇게 문자를 기준으로 sort 해준다 그래서 .sort((a,b) => a - b)를 해야 숫자를 기준으로 오름차순이다. 

해당 문제는 그냥 아침 이슈인가 싶지만 그래도 정리를 한번 해야 다음부턴 안헷갈릴 것 같아서 정리해둔다.

 

그리하여 최종 수정본 코드가

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

이렇게 정리된다. 다음부턴 이런 실수를 하면 안되겠다.