본문 바로가기

lang/c++

c++ 배열

수를 입력받아 배열에 저장할 때

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