✨ 문제 보기
https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript
function solution(array, commands) {
var answer = [];
let arr = [];
let command = [];
for (const arrItem of array) {
arr.push(arrItem);
};
for (const commandItem of commands) {
command.push(commandItem);
};
for(let i = 0; i < command.length; i++) {
let commandI = command[i][0];
let commandJ = command[i][1];
let commandk = command[i][2];
let arrCut = (arr.slice(commandI - 1, commandJ)).sort((a, b) => a - b);
answer.push(arrCut[commandk - 1]);
}
return answer;
}
첫 시도에서 테스트케이스2를 통과하지 못했다.
sort() 의 경우 사전식 정렬되는데, (ex. [1, 3, 10, 2] => [1, 10, 2, 3]) 이 부분이 문제가 되었다.
오름차순으로 정렬되도록 고친 이후에 모든 테스트 케이스를 통과했다.
const numbers = [15, 52, 23, 11, 9];
// 오름차순 정렬, 원본 배열 수정
numbers.sort((a, b) => a - b); console.log(numbers); // [9, 11, 15, 23, 52]
// 내림차순 정렬, 원본 배열이 다시 수정
numbers.sort((a, b) => b - a); console.log(numbers); // [52, 23, 15, 11, 9]
// 출처: https://hohoya33.tistory.com/139 [개발 메모장]
function solution(array, commands) {
return commands.map(command => {
const [sPosition, ePosition, position] = command
const newArray = array
.filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
.sort((a,b) => a - b)
return newArray[position - 1]
})
}
// 출처: https://programmers.co.kr/learn/courses/30/lessons/42748/solution_groups?language=javascript&type=all
function solution(array, commands) {
return commands.map(v => {
return array.slice(v[0] - 1, v[1]).sort((a, b) => a - b).slice(v[2] - 1, v[2])[0];
});
}
// 출처: https://programmers.co.kr/learn/courses/30/lessons/42748/solution_groups?language=javascript&type=all
function solution(array, commands) {
return commands.map(v => {
return array.slice(v[0] - 1, v[1]) // [5, 2, 6, 3], [6], [1, 5, 2, 6, 3, 7, 4]
.sort((a, b) => a - b) // 오름차순으로 정렬
.slice(v[2] - 1, v[2])[0]; // [5],[6],[3]
// [0]으로 [5, 6, 3]을 반환함
});
}
console.log(solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]]));
// [5, 6, 3]