수를 입력받아 배열에 저장할 때
int p;
cin>>p;
A[i]=p;
이렇게 과정을 거치지 않고
바로 아래처럼 하기
cin>>A[i]
1차원 벡터 정렬
#include <vector>
#include <algorithm>
vector<int> v;
v.push_back(4);
v.push_back(3);
v.push_back(2);
v.push_back(1);
sort(v.begin(),v.end()); // 내림 차순 정렬
sort(v.begin(),v.end(),greater<int>()); // 오름차순 정렬
2차원 배열 정렬할 때 보통 벡터를 많이 사용한다!
N행 M열인 벡터를 만들고 싶다면
vector<vector<int>> v(N, vector<int>(M));
이렇게 선언 해주기!
2차원 벡터 정렬
sol 1)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin>>n;
vector<vector<int>> v(n,vector<int>(2));
for(int i=0;i<n;i++)
for(int j=0;j<2;j++){
cin>>v[i][j];
}
sort(v.begin(),v.end());
for(int i=0;i<n;i++) {
for (int j = 0; j < 2; j++) {
cout << v[i][j]<<" ";
}
cout<<'\n';
}
return 0;
}
-> 11650 (저절로 1차원이 같으면 2차원 기준으로 오름차순으로 정렬해준다!)
sol 2)
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(pair<int, int> p1, pair<int, int> p2){
if(p1.first == p2.first){ // 첫 좌표가 같을 경우
return p1.second < p2.second; // 2번째 좌표로 비교
}else{
return p1.first < p2.first;
}
}
int main(){
int n, x, y;
cin >> n;
vector<pair<int, int>> v;
for (int i = 0; i < n;i++){
cin >> x >> y;
v.push_back(make_pair(x, y));
}
sort(v.begin(), v.end(), cmp); // 정렬
for (int i = 0; i < n; i++){
cout << v[i].first << " " << v[i].second << '\n';
}
return 0;
}
pair : 두 객체(세개 이상 X )를 하나의 객체로 취급 할 수 있게 묶어주는 클래스
make_pair(type1,type2); : type1,2 넣은 Pair 클래스를 반환
push_back : Vector의 마지막에 새로운 원소를 추가
'lang > c++' 카테고리의 다른 글
c++ Basic Math (0) | 2024.01.29 |
---|---|
c++ map (0) | 2024.01.29 |
C++ - 입출력,스택,큐,덱 (0) | 2024.01.23 |