1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이 과정
배열을 i번째부터 j번째까지 잘라서 정렬 후 k번째 수를 구하면 되는 간단한 문제이다.
딱히 설명할 것이 없으므로 바로 코드를 보도록 하겠다.
3. 내 코드
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int n = 0; n < commands.length; n++) {
int i = commands[n][0];
int j = commands[n][1];
int k = commands[n][2];
// i번째 부터 j번째 까지 자르기
int[] subarr = Arrays.copyOfRange(array, i - 1, j);
// 자른 문자열 정렬하기
Arrays.sort(subarr);
// k번째 숫자 저장
answer[n] = subarr[k - 1];
}
return answer;
}
}
시간 복잡도
- O(M*NlogN)
배열을 자르는 시간복잡도: O(N)
정렬: O(NlogN)
이를 commands의 길이인 M번 반복하므로 시간복잡도는 O(M*NlogN)이다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 튜플 (0) | 2024.06.20 |
---|---|
[프로그래머스] 가장 큰 수 (0) | 2024.06.20 |
[프로그래머스] 정수 내림차순으로 배치하기 (0) | 2024.06.20 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2024.06.19 |
[프로그래머스] 외벽 점검 (0) | 2024.06.16 |