[JS] 프로그래머스 Lv.1 K번째 수
문제
- 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고
정렬했을 때, k번째에 있는 수를 구하라.
- 배열 array와 [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어진다.
- 연산을 적용한 결과를 배열에 담아 return하라.
제한사항
- array의 길이는 1 이상 100 이하
- array의 각 원소는 1 이상 100 이하
- commands의 길이는 1 이상 50 이하
- commands의 각 원소는 길이가 3
예시
array | commands | return |
[1,5,2,6,3,7,4] | [ [2,5,3], [4,4,1], [1,7,3]] | [5,6,3] |
풀이
1. forEach 함수로 commands의 원소들에 접근한다.
2. commands의 원소들은 [i, j, k]로 이루어져 있으므로,
i = x[0] / j = x[1] / k = x[2]라고 볼 수 있다.
3. 슬라이싱 할 때는 배열의 인덱스를 고려해서 잘라준다.
arr = array.slice(x[0]-1, x[1]);
4. 슬라이싱 한 새로운 배열을 오름차순 정렬해준다.
arr.sort((a, b) => a - b);
5. answer 배열에 k-1번째 인덱스에 있는 원소를 넣어주면 끝!
answer.push(arr[x[2] - 1);
<> 전체 코드 </>
function solution(array, commands) {
var answer = [];
var arr = [];
commands.forEach((x)=> {
arr = array.slice(x[0]-1, x[1]);
arr.sort((a,b)=> a-b);
answer.push(arr[x[2]-1]);
})
return answer;
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
[DFS] 백준 연결 요소의 개수 11724번 (0) | 2023.08.09 |
---|---|
[DFS] 백준 DFS와 BFS 1260번 (0) | 2023.08.09 |
탐색 (0) | 2023.08.09 |
프로그래머스 Lv.1 이상한 문자 만들기 (0) | 2023.08.08 |
프로그래머스 Lv.1 명예의 전당 (1) (0) | 2023.08.08 |
댓글