문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748
1. 나의 풀이
function solution(array, commands) {
var answer = [];
for(let arr of commands) {
var newArr = [];
for(let i = arr[0]; i <= arr[1]; i++) {
newArr.push(array[i-1]);
}
newArr.sort((a,b) => a-b);
answer.push(newArr[arr[2] - 1]);
}
return answer;
}
- commands 배열을 순회하면서 commands 안의 배열들에 접근한다.
- newArr라는 새로운 배열에 접근한다.
- 인덱스 arr[0]부터 인덱스 arr[1]까지 array[i-1]의 값을 newArr에 push한다.(인덱스 조심!)
- newArr를 sort한다.
- sort된 newArr에서 인덱스 arr[2] - 1(인덱스 조심!)의 값을 answer에 push한다.
- answer를 return 한다.
인덱스 접근을 제대로 하지 않으면 답이 제대로 나오지 않으므로 특히 조심해야 했던 문제였다.
2. 다른 사람의 풀이
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]
})
}
‘const [sPosition, ePosition, position] = command’ 구문은 구조 분해 할당을 활용한 것인데,
예를 들어 command가 [1,2,3]이면 sPosition = 1, ePosition = 2, position = 3으로 할당된다.
- array에서 sPosition - 1에서 ePosition -1까지의 요소들을 추출해서 newArray 배열을 생성한다.
- newArray 배열을 정렬한다.
- newArray[position -1]을 return 한다.
구조 분해 할당과 filter를 활용해서 코드가 더욱 깔끔해졌다. 구조 분해 할당은 기회가 되면 다음에 써보고 싶다.
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] ‘입국심사’ 풀어보기 (0) | 2024.12.31 |
---|---|
[프로그래머스 자바스크립트] ‘최소직사각형’ 풀어보기 (2) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘구명보트’ 풀어보기 (0) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘체육복’ 풀어보기 (0) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘기능개발’ 풀어보기 (0) | 2024.07.17 |