이전에 한번 풀었던 기억이 있다. 못풀었었나?
아무튼 그때 당시 어렵게 느껴졌었는데 계속 코테를 풀어서 인가 어떤 함수를 어떻게
사용해야 할지 바로 떠오르게 되었다.
배열에는 map함수 사용하기 다짐했었는데 이번에 또 사용하게 되었고
쉽게 풀수 있었다 .
내가 푼 로직은 아래와 같다
function solution(array, commands) {
let answer = commands.map(x=>
{
let reword = array.slice(x[0]-1,x[1]).sort((a,b)=>a-b)
return reword[x[2]-1]
})
return answer;
}
여기서 처음에 정렬을 위해서 sort()만 사용했었는데
2번 테스트만 틀리더라.. 그래서 sort(a,b=> a-b)를 써주었더니 그제서야 통과가 되었다.
근데 sort((a,b)=>{a-b}) 이렇게 썼는데 나머지가 다 틀렸다.
차이가 뭔지 모르겠다.
다른사람의 풀이를 보았다.
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]
})
}
map과 디스트럭처링 을 사용하니 한결 가독성이 높다.
그리고 나는 slice를 사용했는데 filter함수를 사용했다.
filter 에 두번째 인자로 인덱스를 받을수 있다는 점을 깨닫게 되었고
필터로 인덱스로 배열을 자를수 있다는 점도 새롭게 알게 되었다.
대단한 분들이 많이 있다.