728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42748
1번 소스
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (int ci= 0; ci < commands.size(); ci++) {
int i = commands[ci][0];
int j = commands[ci][1];
int k = commands[ci][2];
vector<int>a;
a.insert(a.end(),array.begin()+i-1,array.begin()+j);// 자르기
sort(a.begin(), a.end());
answer.push_back(a[k-1]);
}
return answer;
}
int main(void) {
vector<int> a =
solution({1,5,2,6,3,7,4},{{2,5,3},{4,4,1},{1,7,3}});
for (int i = 0; i < a.size(); i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
이문제의 취지가 정렬을 만들어 사용해라 인것 일수 있지만 정렬은 구현하는것도 좋지만
stl를 사용하면 더 빠르고 정확합니다. 여기서 포인트는 주어진 자료를 잘 활용해서 원하는 값을
도출해 낼 수 있는지가 포인트가 되지 않을까 합니다. 어려운 문제는 아니지만 백터의 기능이 저런게 있는지 알아두면
좋지 않을까 합니다.
문제를 보게되면
vector<int>a;
a.insert(a.end(),array.begin()+i-1,array.begin()+j);// 자르기
이 부분을 보시면, a는 우리가 저장할 백터라 생각하시고
a.insert(A, B, C);
A-C 부부을 보시면
A는 a라는 백터의 끝인덱스
B는 복사할 백터의 처음 인덱스 값
C는 복사할 백터의 마지막 인덱스 값+1 범위라고 생각하시면되요
저렇게 봐도 이해가 안된다면 직접 결과값이 어떻게 되는지 확인하시면됩니다.
아니면
2번 소스
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
vector<int> tempArray;
for (int ci= 0; ci < commands.size(); ci++) {
tempArray = array;
int i = commands[ci][0];//i 값
int j = commands[ci][1];//j 값
int k = commands[ci][2];//k 값
sort(tempArray.begin() + i - 1, tempArray.begin() + j);
//원하는 범위만 정렬
//원하는 범위에서 k번째는 i+k-2 의 인덱스
answer.push_back(tempArray[i+k-2]);
}
return answer;
}
int main(void) {
vector<int> a =
solution({1,5,2,6,3,7,4},{{2,5,3},{4,4,1},{1,7,3}});
for (int i = 0; i < a.size(); i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
간단히 구현하고 싶으시면 이런 방식도 있습니다. 원래 푸는 방식은 어려가지 이므로 참고 하세요.
1번 실행 결과
2번 실행 결과
728x90
반응형
'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글
1181 단어 정렬 (0) | 2020.08.24 |
---|---|
1076 저항 (0) | 2020.08.24 |
17142 연구소 3 (0) | 2020.08.20 |
프로그래머스 프린터 (0) | 2020.08.19 |
17141 연구소2 (0) | 2020.08.19 |
댓글