연습을 안했더니
벡터 쓰는게 헷갈려서
은근 헤맸던 문제..
진짜 이상한데서 오류나서 이건 기록을 해야할 것 같다
코드설명은 밑으로
```기록용
테스트할때 오류가 났던건데 이중배열 벡터 선언하려고 했더니 저 <int> >에서 오류가 났다..
//저 띄어쓰기...
vector<vector<int> > commands(3,vector<int>(3,0));
```
코드&함수 설명
c++알고리즘이 참 감사했던 문제들
우선 이 코드에서는 3가지가 중요했다.
1. else if(j==1)일때 commands[i][j]에서 -1을 안해준다. => 배열이니까 1더 크게!
*-1을 해준이유는 여기서는 n번째 수로 값을 주지만 우리는 배열을 계산해야해서 -1을 해줬다.
2. copy함수 사용법
- 사이즈 지정은 copy.resize()로 한다.
- copy(array.begin()+first,array.begin()+last,copy_arr.begin());
- *보통은 copy(array.begin(),array.end(),copy_arr.begin()); 로 하는데 나는 특정 n번째 값들이 필요했기 때문에 begin에 더하는식으로 계산했다
- 여기서 copy_arr 에도 begin을 붙여줘야한다. 알아서 begin부터 들어가게 하는 것 같다. 이걸안해서 시간이 더 걸렸었다..
- 마지막에 clear해줄것! 여러번 쓸꺼라서 clear를 해줬다.
- 원소 넣을때는 push_back으로 넣었다. ->vscode에서 vector[i]=n이런식으로 할당하면 예외가 뜨길래 그냥 push_back으로 넣어줬다.
3. sort함수 사용법
- sort(copy_arr.begin(),copy_arr.end()); ->default는 오름차순이고
- 만약 내림차순을 하고 싶다면 밑에처럼 하면 된다.
sort(v.begin(),v.end(),greater<자료형>());
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands){
vector<int> answer;
vector<int> copy_arr;
int first=0;
int last=0;
int count=0;
//for문에서 첫번째 for문 끝났을때 first-last까지 copy_arr에 copy하고 sort로 정렬
for(int i=0;i<commands.size();i++){
for(int j=0;j<commands[j].size();j++){
if(j==0)
first=commands[i][j]-1;
else if(j==1)
last=commands[i][j];
else if(j==2)
count=commands[i][j]-1;
}
copy_arr.resize(last-first);
copy(array.begin()+first,array.begin()+last,copy_arr.begin());
sort(copy_arr.begin(),copy_arr.end());
answer.push_back(copy_arr[count]);
copy_arr.clear();
}
return answer;
}
'코테 준비-문제풀기' 카테고리의 다른 글
프로그래머스 - 정렬 H-index 문제 (0) | 2020.05.01 |
---|---|
프로그래머스-스택 '탑'문제 (0) | 2020.01.08 |
백준 7785 (0) | 2019.09.18 |
2193 Dynamic -이친수 구하기 (0) | 2019.06.02 |
1260 DFS BFS (1) | 2019.05.29 |