관리 메뉴

cococo-coding

[C++ 풀이] 7568번. 덩치 본문

[BOJ] 코드 모음/C++_learning 문제집

[C++ 풀이] 7568번. 덩치

_dani 2024. 1. 19. 16:44

 

풀이

몸무게와 키 값 2개를 받아야하는 문제이다.

vector <pair>를 이용하면 쉽게 풀 수 있다. 

 

vector <pair<int,int>> v; 를 선언하고

for문을 이용해 n개의 몸무게와 키값을 받는다.

v.push_back(pair<int, int>>(x,y));

 

이때 몸무게와 키 값이 모두 다 커야므로 승리하므로

이중포문을 이용해 first요소(몸무게)와 second요소(키)를 모두 비교해서 큰 경우만 count값을 증가시켜준다.

(count값의 초기값은 1로 해주고, 이기는 경우만 count가 증가된다)

    //3
    //몸무게와 키가 모두 커야 승리
    for (int i = 0; i < n; i++) {
        int count = 1;
        for (int j = 0; j < n; j++) {
            if (v[i].first < v[j].first && v[i].second < v[j].second) {
                count++;
            }
        }
        cout << count << '\n';
    }

 

 

 

코드

#include <iostream>
#include <vector>
using namespace std;

/*
    pair 벡터를 활용

    1. 전체 사람의 수 n을 입력받는다.
    2. 각 사람의 몸무게와 키를 x,y 를 입력받는다.
    3. 각 사람의 덩치 등수를 구해서 출력한다.
*/

int main() {
    //1
    int n;
    cin >> n;

    //2
    vector <pair<int, int>> v;
    int x, y;

    for (int i = 0; i < n; i++) {
        cin >> x >> y;
        v.push_back(pair<int, int>(x, y));
    }

    //3
    //몸무게와 키가 모두 커야 승리
    for (int i = 0; i < n; i++) {
        int count = 1;
        for (int j = 0; j < n; j++) {
            if (v[i].first < v[j].first && v[i].second < v[j].second) {
                count++;
            }
        }
        cout << count << '\n';
    }

    return 0;
}