
function solution(array, commands) {
// commands는 [i, j, k]를 원소로 가지고 있음
// commands에 따라 자를 배열
const sliced = [];
for (let i in commands) {
const ith = commands[i][0];
const jth = commands[i][1];
// 변수 ith가 i번째 인덱스를 의미하는 것이 아니므로 -1을 해주어야 함
const start = ith - 1;
const end = jth;
sliced.push(array.slice(start, end));
// commands에 따라 정렬
sliced[i].sort((a, b) => a - b);
}
// 반환할 배열
const result = [];
for (let i in commands) {
const kth = commands[i][2];
result.push(sliced[i][kth - 1]);
}
return result;
}
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]
})
}
평소였다면 '하... 코드 참 드럽게 작성해서 풀었네🤯 그래도 풀었으니 나 자신 백만점~😇🫶 다른 사람 코드 한번 보고 다음 문제나 풀어야지~' 하면서 내 칭찬을 하고 있었을텐데, 이 풀이를 본 이후에는 '하... 코드 참 드럽게 작성해서 풀었네🤯 나 자신 마이너스 백만점~🥹'으로 감정이 급격히 바뀌었다.
자바스크립트를 공부하면서 아직까지 잘 이해하지 못하고 활용하지 못하는 부분이 몇 가지 있는데, 예를 들면 return을 쓰고, 그 블럭 안에 또 return을 쓰는 경우라든가, 화살표 함수를 이용해서 이런 저런 메서드들을 연결하는 경우라든가, 그리고 구조 분해 할당을 사용하는 경우라든가... 등등이 있다. 근데... 이 풀이는 내가 잘 이해하지 못하고 활용하지 못하는 모든 것들을 압축해놓았다.
콘솔에 하나씩 찍어 보면서 내가 잘 몰랐던 부분을 이 코드를 통해 공부해보았다.
우선, return을 쓰고 그 블럭 안에 또 return을 한 이유는, 코드 마지막 줄에 있는 (블럭 안에 있는) return에서 newArray[position - 1]을 반환하여야만 첫 return에서 map을 하여 정답을 반환할 수 있기 때문이라고 이해했다.
그리고 구조 분해 할당. 아직 내 단어로 명확하게 설명할 수 있을 정도의 이해는 하지 못했지만, 어렴풋이 어떤 상황에서, 어떻게 사용하는 게 좋을지는 조금 이해하게 되었다.
역시나 오늘도 조금 더, 아니, 많이 더 공부해야겠단 생각으로 포스트 작성을 마친다. 아자자.💪