[ 프로그래머스 ] k번째 수(정렬)
기댓값이 다르게 나온 코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
std::vector<int> answer;
std::vector<int> tmp;
int num = commands.size(); //commands[num][?]
for(int s = 0;s<num;s++){
int i = commands[s][0] - 1;
int j = commands[s][1] - 1;
int k = commands[s][2] - 1;
for(int p = i;p<j;p++){
tmp.push_back(array[p]);
}
std::sort(tmp.begin(),tmp.end());
answer.push_back(tmp[k]);
}
return answer;
}
이러한 오류가 발생하여서 구글링을 해보니, answer.push_back(tmp[k])
의 다음 줄에 tmp.clear()
를 추가해줘야한다.
올바른 코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
std::vector<int> answer;
std::vector<int> tmp;
int num = commands.size(); //commands[num][?]
for(int s = 0;s<num;s++){
int i = commands[s][0] - 1;
int j = commands[s][1];
int k = commands[s][2] - 1;
for(int p = i;p<j;p++){
tmp.push_back(array[p]);
}
std::sort(tmp.begin(),tmp.end());
answer.push_back(tmp[k]);
tmp.clear();
}
return answer;
}