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;
}

commandsi는 1부터 시작한 값이므로 -1 해줍니다.
commandsj 값을 인덱스로 사용한다면 해당 인덱스를 포함해서 정렬하므로 그대로 사용합니다.
commandsk는 정렬 시작 인덱스부터 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)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기