728x90
어려웠던 점:
1.현실 카운팅 (1부터셈: 1,2,3...) 과 array의 index값 카운팅(0부터셈 : 0,1,2...)의 차이를 인지해야한다.
2.sort의 오름차순 정렬방법을 알아야 한다.
자바스크립트 sort는 숫자가 아닌 문자로 인식하기때문에, sort(); 이렇게 공백으로 처리한다면.
예를들면 [1,2,3,10] 이렇게 정렬해주는 것이아니라,
[1,10,2,3] 이런식으로 정렬이 된다고 한다 (아래예제참고)
그래서 숫자정렬시 파라미터(compareFunction)을 입력 해주어야 한다,
즉 ((a,b)=>a-b) 이것이 sort의 오름차순 파라미터이고, 이것을 명시해주어야 숫자 정렬을 할 수 있다.
compareFunction
- 이함수는 두개의 배열 element를 파라미터로 입력받는다.
- 이함수가 a,b 두개의 element를 파라미터로 입력받을 경우,
- 이 함수가 리턴하는 값이 0보다 작을 경우, a가 b보다 앞에 오도록 정렬하고,
- 이 함수가 리턴하는 값이 0보다 클 경우, b가 a보다 앞에 오도록 정렬합니다.
- 만약 0을 리턴하면 a와 b의 순서는 변경하지 않는다.
const arr = [2, 1, 3, 10];
arr.sort ();
document.write(arr +'<br>');
//[1, 10, 2, 3]
const arr = [2, 1, 3, 10];
arr.sort ( function(a, b){
if(a > b) return 1;
if(a === b) return 0;
if(a < b) return -1;
} );
document.write(arr +'<br>');
//[1, 2, 3, 10]
아래는 .sort(compareFunction) 설명 링크이다.
https://hianna.tistory.com/409
문제 정답
function solution(array, commands) {
let answer = [];
let Sarr = [];
for(let i = 0; i<commands.length; i++){
Sarr = array.slice(commands[i][0]-1,commands[i][1]);
Sarr.sort((a,b) => a-b);
answer.push(Sarr[commands[i][2]-1]);
}
return answer;
}
728x90
'Programmers > javascript' 카테고리의 다른 글
[JS] Programmers 최대공약수와 최소공배수 ☑ (0) | 2022.06.10 |
---|---|
[JS] Programmers 모의고사 ☑ (0) | 2022.06.09 |
[JS] Programmers 이상한 문자 만들기 ☑ (0) | 2022.06.08 |
[JS] Programmers 부족한 금액 계산하기 ☑ (0) | 2022.06.08 |
[JS] Programmers 같은 숫자는 싫어 ☑ (0) | 2022.06.08 |