본문 바로가기

Algorithm/Programers - C++

[프로그래머스]정렬 - K번째수

문제

풀이

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    vector<int> arr;
    
    for(int i=0; i<commands.size(); i++){
        arr.assign(array.begin()+commands[i][0]-1, array.begin()+commands[i][1]);
        sort(arr.begin(), arr.end());
        answer.push_back(arr[commands[i][2]-1]);
    }
    
    return answer;
}

K번째 수를 찾기 위해 배열을 n번째부터 m번째까지 자르는 과정이 필요했는데 이때 assign을 사용했다.

 

array.assign(array.begin()+n-1, array.begin()+m);

-위를 사용하면 n번째부터 m번째까지의 백터를 얻을 수 있다.

 

 

 


다른사람 풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    vector<int> temp;

    for(int i = 0; i < commands.size(); i++) {
        temp = array;
        sort(temp.begin() + commands[i][0] - 1, temp.begin() + commands[i][1]);
        answer.push_back(temp[commands[i][0] + commands[i][2]-2]);
    }

    return answer;
}

assign을 사용하지 않고 sort를 사용하여 벡터에서 원하는 부분만 잘라낼 수 있었다.

 

내 코드 실행시간
다른사람 코드 실행시간

실행시간은 비슷해 보였다! 

 

 


https://modoocode.com/183

 

C++ 레퍼런스 - STL 컨테이너 - vector::assign 함수

 

modoocode.com