728x90
#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;
}
sort와 vector를 이용해서 문제를 풀어보았다.
배열을 사용할 때는 algorithm 헤더의 sort를 이용하려면 배열의 주소를 넣어서 범위를 지정해 정렬을 하는데,
벡터를 사용할 때는 반복자에 들어갈 값을 넣어야 하는 것 같았다.
그래서 함수에 매개변수로 들어온 array를 temp에 복사하고, 주어진 범위만 정렬한 후 전체 배열에서 k번째 수를 찾게 했다.
답은 나왔으나, 주어진 배열이 길거나 검사해야하는 범위가 짧은 경우 효율성이 떨어질 수 있다는 문제점을 느꼈다.
그런데 다른 사람의 풀이를 보니 내 풀이랑 똑같은 코드가 클린 코드로 칭찬받고 있었다.
뿌듯하다^.^
'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
[C++] 프로그래머스 - 모의고사 (0) | 2021.07.02 |
---|---|
[C++] 프로그래머스 - 폰켓몬 (set) (0) | 2021.06.29 |
[C++] 프로그래머스 - 키패드 누르기 (배열 노가다 + 지향할 풀이) (0) | 2021.06.25 |
[C++] 프로그래머스 - 징검다리 건너기 (0) | 2021.06.24 |
[C++] 프로그래머스 - 두 개 뽑아서 더하기 (벡터, sort, find) (0) | 2021.06.24 |