[7568] 덩치

레이몬드 현식·2022년 1월 12일
0

코테

목록 보기
1/5
post-thumbnail

📝 문제

7568번 : 덩치

💡 생각

처음에 덩치를 비교하는 부분에서 해맸지만, 문제를 잘 읽어보면

  • N명의 집단에서 각 사람의 덩치 등수는 자신보다 더 "큰 덩치"의 사람의 수로 정해진다. 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다.

덩치를 비교해 순위를 매기는 것을 알 수 있다.
따라서 특정 한 사람을 나를 제외한 모든 사람과 비교하기 위해 이중포문을 사용하였다.

또한, 덩치를 비교하기 위해 키와 몸무게를 모두 고려해야 하므로 키와 몸무게 두가지를 담을 수 있는 자료형인 pair을 사용하여 비교하였다.

💻 코드

#include <vector>
#include <iostream>

bool comp(pair<int, int> p, pair<int, int> p2) {	// 덩치 비교 함수
    if (p.first < p2.first && p.second < p2.second)	// 키와 몸무게 모두 작을 때(덩치가 작을 때) true 반환
        return true;
    else
        return false;
}

int main() {
    int n, x, y;
    vector<pair<int, int>> pv;	// 키와 몸무게
    pair<int, int> p;
    vector<int> rank;	// 순위

    cin >> n;

    for (int i = 0; i < n; i++) {
        cin >> x;
        cin >> y;
        p = make_pair(x, y);	// 키와 몸무게를 입력받아 pair에 저장
        pv.push_back(p);
    }

    for (int i = 0; i < n; i++) {
        int r = 0;
        for (int j = 0; j < n; j++)
            if (comp(pv[i], pv[j]) == true) r++;  // 덩치가 작으면 등수 +1
        rank.push_back(r);
    }

    for (int i = 0; i < rank.size(); i++)
        cout << rank[i] +1  << " ";
}

0개의 댓글