https://school.programmers.co.kr/learn/courses/30/lessons/42748
이 문제는 벡터 slice 문제이다.
vector를 slice하기 위해서는 begin()과 end() 함수를 사용해야 한다.
begin() 함수는 벡터의 첫번째 인덱스를 가리키는 iterator를 반환한다. 마찬가지로 end() 함수는 벡터의 마지막 인덱스를 가리킨다.
문제에서 i에서 j까지 배열을 slice하라고 나타냈기 때문에 begin()에 i와 j 값을 더해야한다.
이때 i는 0부터 시작하는 것이 아닌 1부터 시작하는 것을 기억해야한다.
따라서 첫번째 매개변수에는 begin() + i + 1을 해야 i부터 자를 수 있다.
두번째 매개변수에는 begin() + j를 해야한다.
마지막으로 answer 배열에 삽입 시 k - 1 인덱스의 요소를 삽입해야한다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int N;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
N = commands.size();
for(int i = 0;i<N;i++){
vector<int> v(array.begin() + (commands[i][0]-1), array.begin() + (commands[i][1]));
sort(v.begin(),v.end());
answer.push_back(v[commands[i][2]-1]);
}
return answer;
}
'Programmers Review' 카테고리의 다른 글
[Lv 1] 완주하기 못한 선수 (0) | 2024.06.01 |
---|---|
[Lv 1] 모의고사 (0) | 2024.06.01 |
[Lv 1] 크레인 인형뽑기 (0) | 2024.05.30 |
[Lv 1] 키패드 누르기 (0) | 2024.05.30 |
[Lv 1] 이상한 문자 만들기 (0) | 2024.05.27 |