반응형
문제
- 문제 링크: K번째 수
해설
- 자료구조:
- 시간복잡도:
(풀이과정)
1)
2)
3)
4)
코드
(C언어)
solution 1)
더보기
solution 1
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C++)
solution 1)
더보기
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (size_t i = 0; i < commands.size() ; ++i){
vector<int> v;
for (size_t j = commands[i][0]-1; j < commands[i][1]; ++j){
v.push_back(array[j]);
}
sort(v.begin(), v.end());
answer.push_back(v[commands[i][2]-1]);
}
return answer;
}
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C#)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Java)
solution 1)
- N: array의 길이
- M: commands의 길이
- commands의 각 원소에 대해 배열을 자르는 시간 복잡도: O(N)
- 이후 정렬을 포함한 시간 복잡도는 O(NlogN)이고 이를 M번 반복하므로 최종 시간 복잡도는 O(M*NlogN)
더보기
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for (int c = 0; c < commands.length; c++) {
int i = commands[c][0];
int j = commands[c][1];
int k = commands[c][2];
// i번째부터 j번째까지 자르기
int[] slicedArr = Arrays.copyOfRange(array, i - 1, j);
// 자른 배열을 정렬하기
Arrays.sort(slicedArr);
// k번째 원소 구하기
answer[c] = slicedArr[k - 1];
}
return answer;
}
}
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Python)
solution 1)
- N: array의 길이
- M: commands의 길이
- commands의 각 원소에 대해 배열을 자르기: O(N)
- 정렬의 시간 복잡도: O(NlogN)
- 모두 M번 반복하므로 최종 시간 복잡도: O((M*N)logN)
더보기
def solution(array, commands):
answer = []
for cmd in commands:
i, j, k = cmd
sliced_arr = array[i - 1 : j] # i번째부터 j번째까지 자르기
sorted_arr = sorted(sliced_arr) # 자른 배열을 정렬하기
answer.append(sorted_arr[k - 1]) # k번째 원소 구하기
return answer
solution 2)
더보기
def solution(array, commands):
answer = []
for com in commands:
tmp = sorted(array[com[0]-1:com[1]])
answer.append(tmp[com[2]-1])
return answer
solution 3)
더보기
import
(JavaScript)
solution 1)
- N: array의 길이
- M: commands으 ㅣ길이
- commands의 각 원소에 대해 배열을 자르는 시간 복잡도: O(N)
- 정렬을 포함한 시간 복잡도: O(NlogN)
- 최종 시간 복잡도: O((M*N)lgoN)
더보기
function solution(array, commands) {
const answer = [];
for (const command of commands) {
const [i, j, k] = command;
const sliced = array.slice(i - 1, j); // i부터 j까지 자르기
sliced.sort((a, b) => a - b); // 자른 배열을 정렬하기
answer.push(sliced[k - 1]); // k번째 원소 구하기
}
return answer;
}
solution 2)
더보기
import
solution 3)
더보기
import
반응형
'1-4. 코딩테스트 문제집(진행중) > PCCP(Lv1)' 카테고리의 다른 글
[PCCP] Lv1: 예산(12982) 해설 (0) | 2024.12.25 |
---|---|
[PCCP] Lv1: 정수 내림차순으로 배치하기(12933) 해설 (0) | 2024.12.25 |
[PCCP] Lv1: 문자열 내 마음대로 정렬하기(12915) 해설 (0) | 2024.12.25 |
[PCCP] Lv1: 폰켓몬(1845) 해설 (0) | 2024.12.24 |
[PCCP] Lv1: 신고 결과 받기(92334) 해설 (0) | 2024.12.24 |