1. 문제
programmers.co.kr/learn/courses/30/lessons/42748
2. 접근 방법
1) array에 있는 값들을 -> 자른 후 -> 정렬하여 -> K번째 수를 구하여 answer에 넣는 단순 구현 문제
=> command[i]에 주어진 세 값(i,j,k)를 사용하여 array[i]~array[j]까지 범위만 복사하여 -> 정렬 후 -> K-1번째 값을 구함
2) 해당 문제는 assign함수를 알면 쉽게 풀 수 있었음
3. 실수했던 부분 & 처음 알았던 부분
* assign함수
1) v.assign(N, "값") : 이전에 있었던 원소들은 모두 삭제하고, 인자로 받은 새로운 내용을 집어 넣는다. N개만큼 "값"을 넣음
2) v. assign( iterator first, iterator last) => v[first]~v[last-1], 즉 last의 직전까지만 저장
ex. v.assign(v.begin() + 1, v.begin() +5) => v[1] ~ v[4] 값만 남김
4. 코드
더보기
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
int num = commands.size();
for( int i = 0 ; i < num; i++) {
vector<int> ithV = commands[i];
vector<int> subArray;
subArray.assign(array.begin() + ithV[0] - 1, array.begin() + ithV[1] );
sort(subArray.begin(), subArray.end());
answer.push_back(subArray[ithV[2]-1]);
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Lv2]소수찾기(C++) (0) | 2020.10.23 |
---|---|
[Lv2]가장 큰 수(C++) (0) | 2020.10.17 |
[Lv2]구명보트(C++) (0) | 2020.10.17 |
[Lv2]삼각달팽이(C++) (0) | 2020.10.17 |
[Lev.2] 수식 최대화(C++) (0) | 2020.07.03 |