https://school.programmers.co.kr/learn/courses/30/lessons/42748
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
입력
array - 주어진 정수 배열
commands - [i, j, k]가 담긴 배열 (각각 정수이다, 배열의 i번째부터 j번째까지의 배열을 잘라서 오름차순으로 정렬했을 때의 k번째 수)
출력
return - commands를 활용하여 찾은 정수 배열
제한사항
- array의 길이는 1 이상 100 이하입니다.
- array의 각 원소는 1 이상 100 이하입니다.
- commands의 길이는 1 이상 50 이하입니다.
- commands의 각 원소는 길이가 3입니다.
풀이
사이트에서 코드 짜기 너무 편하게 하나하나 설명해 줘서 좋았다.
- i번째부터 j번째의 배열을 자른다. slice(i-1, j) 메서드를 이용한다.
- 오름차순으로 정렬한다. sort((a, b) => a-b) 메서드를 이용한다. (오름차순 정렬!)
- k번째 수를 검색한다. at(k-1) 메서드를 이용한다. [k-1]도 가능하다.
따라서 javascript의 장점을 이용하여 선언형 프로그래밍으로 작성하였다.
시간 복잡도는 commands 배열의 길이를 m, array 배열의 길이를 n이라고 할 때 array 배열을 자르고 정렬한 뒤 검색하므로 O(m*n2log2n)이다.
공간 복잡도는 매개변수로 주어진 배열 등을 저장하므로 O(n)이다.
코드
function solution(array, commands) {
var answer = commands.map((v)=>array.slice(v[0]-1, v[1]).sort((a, b)=>a-b).at(v[2]-1));
return answer;
}
한줄 코드 오랜만이다.
728x90
'Computer > 알고리즘' 카테고리의 다른 글
[JS] 프로그래머스 가장 큰 수 (1) | 2025.01.27 |
---|---|
[JS] 프로그래머스 주식가격 (1) | 2025.01.25 |
[JS] 프로그래머스 다리를 지나는 트럭 (3) | 2025.01.24 |
[JS] 프로그래머스 프로세스 (1) | 2025.01.23 |
[JS] 프로그래머스 올바른 괄호 (2) | 2025.01.22 |