https://programmers.co.kr/learn/courses/30/lessons/42748?language=cpp
전체 배열을 주어주고, 구간을 잘라 정렬하고, 거기서 k번째 수를 찾는 문제.
구간을 복사하여, 주어진대로 한다.
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
vector<vector<int>>::iterator commandIter = commands.begin();
vector<int> copyArray;
for (; commandIter != commands.end(); ++commandIter) {
copyArray.assign(array.begin() + commandIter->at(0) - 1, array.begin() + commandIter->at(1));
sort(copyArray.begin(), copyArray.end());
answer.push_back(copyArray[commandIter->at(2) - 1]);
}
return answer;
}
이 문제를 풀고 나서 좀 더 간결하게 풀 방법이 없을까 했다가, 다른 분의 풀이를 참고하여 다시 풀어 보았다.
//second sol
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
vector<int> copyArray;
for (auto& command : commands) {
copyArray.assign(array.begin() + command[0] - 1, array.begin() + command[1]);
sort(copyArray.begin(), copyArray.end());
answer.push_back(copyArray[command[2] - 1]);
}
return answer;
}
'coding_test > programmers' 카테고리의 다른 글
lv1 / 하샤드 수 / C++ (0) | 2021.12.20 |
---|---|
lv1 / 2016년 / C++ (0) | 2021.12.20 |
lv1 / 없는 숫자 더하기 / C, C++ (0) | 2021.11.03 |
lv1 / 수박수박수박수박수박수? / C (0) | 2021.10.12 |
lv1 / 내적 / C (0) | 2021.09.17 |