체이닝으로 풀어야 속도로 테스트 케이스 다 통과할 수 있음
아래 풀이로 풀었을 때는 케이스를 다 맞추진 못했음.
// 첫번째 풀이
function solution(array, commands) {
let answer = [];
let newArray = [];
commands.forEach((e) => {
newArray = [];
for (let i = e[0] - 1; i < e[1]; i++) {
newArray.push(array[i]);
}
newArray.sort();
console.log(newArray);
answer.push(newArray[e[2] - 1]);
});
return answer;
}
1. map 사용해서 한 줄씩 뽑는다.
2. array.slice(first index, last index) 을 통해 배열을 자른다. => last index는 해당 번째를 포함하지 않는다.
3. slice 해서 자른 배열에서 sort((a,b)=> a-b) 오름차순으로 정렬하고 정렬된 것의 배열을 바로 [] 번째를 뽑아낸다.
function solution(array, commands) {
let answer = [];
answer = commands.map(v => {
return array.slice(v[0]-1, v[1]).sort((a,b) => a-b)[v[2]-1];
})
console.log(answer);
return answer;
}
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 lv2 - 위장 (0) | 2021.08.08 |
---|---|
[알고리즘 스터디 #01] 자바스크립트 알고리즘 / 문법 공부 (0) | 2021.06.13 |
[DFS] 개념이해 및 Programmers lv.2 타겟넘버 (자료구조) (0) | 2021.03.19 |
알고리즘 스터디 (0) | 2021.03.05 |
[백준] 15685 드래곤커브 : 시뮬레이션 (0) | 2019.11.15 |