프로그래머스 Lv.1 "K번째수" 문제입니다.
Solved-Algorithm/JavaScript/프로그래머스/1/42748. K번째수 at main · ParkBible/Solved-Algorithm
This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - ParkBible/Solved-Algorithm
github.com
??? : 어 겁나 쉽네
function solution(array, commands) {
const results = [];
for (command of commands) {
const [i, j, k] = command;
results.push(array.slice(i - 1, j).sort()[k - 1]);
}
return results;
}
뚝딱뚝딱
???????
.sort() 메소드에 상상도 못한 로직이 숨겨져 있었습니다.
이 녀석은 배열의 요소를 문자열로 바꿔서 비교한다고 합니다.
[1, 100, -1, 2, -2].sort(); // [-1, -2, 1, 100, 2]
당황스러운 결과가 나오는 것을 볼 수 있습니다. 그래서 아래와 같이 코드를 변경해야 합니다.
[1, 100, -1, 2, -2].sort((a, b) => a - b); // [-2, -1, 1, 2, 100]
sort() 메소드는 두 개의 인자(편의상 a, b)를 가지고 있는 콜백 함수를 인자로 받습니다.
a와 b는 배열 안의 임의의 두 요소를 뜻합니다.
- 콜백 함수가 음수를 리턴하면 a는 b의 앞에 옵니다.
- 양수를 리턴하면 b가 a의 앞에 옵니다.
- 0을 리턴하면 그대로 유지합니다.
그래서 결국 위의 성질을 이용하여 배열을 오름차순으로 정렬한 것이죠.
Lv.1 문제에서도 몰랐던 부분이 있네요... 오늘도 한수 배우고 갑니다.
'IT > JavaScript & TypeScript' 카테고리의 다른 글
[JavaScript/알고리즘] CyclicRotation (feat. 테스트 케이스) (2) | 2025.01.04 |
---|---|
[JavaScript/알고리즘] BinaryGap (1) | 2025.01.03 |
[TypeScript] 유틸리티 타입 (Partial, Required, Record, Pick, Omit, Exclude) (1) | 2024.12.12 |
[TypeScript] 타입스크립트의 TS7053 오류와 타입 추론 (1) | 2024.11.30 |
[TypeScript] 타입스크립트의 Duck Typing과 Freshness (1) | 2024.11.29 |