[프로그래머스][C++] K번째수
K번째수
문제 링크
분석
배열의 특정 구간만 정렬하고, 특정 인덱스의 값을 반환하는 문제입니다.
배열을 정렬 할 때 문제에서 매개변수로 주어진 배열을 정렬하면 원본이 수정되므로, 배열을 복사해야합니다.
풀이
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (int i = 0; i < commands.size(); ++i)
{
vector<int> vec{ array };
int start = commands[i][0] - 1;
int end = commands[i][1];
int numIndex = start + commands[i][2] - 1;
sort(vec.begin() + start, vec.begin() + end);
answer.push_back(vec[numIndex]);
}
return answer;
}
commands
의 i
는 1부터 시작한 값이므로 -1 해줍니다.
commands
의 j
값을 인덱스로 사용한다면 해당 인덱스를 포함해서 정렬하므로 그대로 사용합니다.
commands
의 k
는 정렬 시작 인덱스부터 k
번째를 확인하므로 값을 더해야하는데, 1부터 시작한 값이므로 -1 해줍니다.
성능 요약
테스트 1 〉 통과 (0.01ms, 4.2MB)
테스트 2 〉 통과 (0.01ms, 3.64MB)
테스트 3 〉 통과 (0.01ms, 4.22MB)
테스트 4 〉 통과 (0.02ms, 4.21MB)
테스트 5 〉 통과 (0.01ms, 4.15MB)
테스트 6 〉 통과 (0.01ms, 4.14MB)
테스트 7 〉 통과 (0.01ms, 4.14MB)
댓글남기기