[JS] 프로그래머스 K번째수
내사랑 ben&jerry's의 스티커가 사라져서 하루종일 넘넘 슬펐다..
꾸역꾸역...... 알고리즘을 풀었다😭
이거만이라도 안풀고자면 더 슬플것같았다........................
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
이상하다.. 콘솔로는 결과가 잘 나오는데 프로그래머스로 코드를 실행해보면 자꾸 arr을 찾을수없다고한다.
이것저것 시도해보다가 겨우 테스트에 통과하였는데
다른 사람들의 답을 보니 나의 코드는 너무 하찮은 코드였다🙄
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]
})
}
✨ 우선 변수를 선언한 부분에서 배열 디스트럭처링을 사용하여 넘나 직관적이고 깔끔하다. (참고블로그)
첫번째 command는 [2, 5, 3]이다. 즉, sPosition = 2; ePosition = 5; position = 3;
✨ filter 메서드는 주어진 조건이 참인 요소를 모아 새로운 배열로 반환하는 메서드이다!
fIndex >= 2-1 && fIndex <= 4 의 조건에 맞게 새로 만들어진 배열을 오름차순 sort한다.
그럼 이제 [2, 3, 5, 6]배열이 만들어질테고, 여기서 [position - 1] 즉, [3 - 1]번째의 요소를 리턴하게되니 5를 반환한다.
이런식으로 map을 돌린 코드이다.
너무멋지다!!! 나는 언제즘 이런 코드를 짤 수 있을까?
그래도 다행히 벤엔제리스티커의 슬픔은 잠시나마 잊을 수 있었다..
다시 눈물을 머금고 잠자리로..