알고리즘/문제_programmers
Programmers_K번째수
simple_dev
2021. 3. 6. 18:35
programmers.co.kr/learn/courses/30/lessons/42748
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
문제 설명
문제
- 배열 array 의 i 번째 숫자부터 j 번째 숫자까지 자르고 정렬했을 때, k 번째 있는 수를 구하는 문제
- [i, j, k] 를 원소로 가진 2차원 배열 commands 가 매개변수로 주어질 때
- commands 의 모든 원소에 대한 모든 결과를 배열에 담아 return
제한 사항
- array 의 길이는 1이상 100 이하
- array 의 각 원소는 1이상 100 이하
- commands 의 길이는 1 이상 50 이하
- commands 의 각 원소는 길이가 3
풀이
풀이
- commands 배열을 순회하면서, array 의 i - 1 이상, j 미만의 길이를 복사
- 복사한 배열을 오름 차순 정렬- k - 1 번째 원소를 answer 배열에 push
주의할점
- sort 는 배열에 영향을 주므로, 사용에 주의해야함
- sort 는 값을 string type 으로 비교하므로, 정렬 조건에 따라 callback function 을 작성
- 배열을 사용하므로, i, j, k 를 그냥 사용하면, 잘못된 결과가 출력되므로 주의해야함
코드
function solution(array, commands) {
const answer = [];
// commands 배열을 기준으로 순회
commands.forEach((value) => {
const [i, j, k] = value;
// 조건에 맞는 배열을 복사한 뒤, 오름차순으로 정렬
const selectList = array.slice(i - 1, j).sort((first, second) => first - second);
answer.push(selectList[k - 1]);
})
return answer;
}