(C++) (백준 7568)

(문제)

7568호: 빅(acmicpc.net)

7568:빅

우리는 키와 몸무게를 두 가지 값으로 표현하여 사람들의 순위를 매기려고 합니다. 사람의 몸무게가 x kg이고 키가 y cm이면 사람의 크기는 (x, y)로 표시됩니다. A와 B 두 사람의 덩

www.acmicpc.net

(문제 해결)

배열을 만든 후 해당 위치에서 처음부터 끝까지 배열을 트래버스하여 해당 위치보다 큰 값이 몇 개인지 확인합니다. 완전한 문장을 두 번 반복하면 쉽게 풀 수 있는 문제입니다.

(회고)

처음에는 배열을 복사한 후 정렬하여 어디에 있는지 알아내려고 했지만 해당 코드에서 오류가 발생했습니다.

논리 구현에서 조건을 만족하는 if 문 쪽에서 같은 숫자가 나올 때 문제가 발생한 것 같습니다.

(암호)

#include <iostream>
#include <vector>
#include <algorithm>
#define endl "\n"
using namespace std;

int n;

int main(){
    cin>>n;
    vector<int> result;
    vector<pair<int, int> > height(n, pair<int,int>());
    for(int i = 0;i<n;i++){
        cin>>height(i).first>>height(i).second;
    }

    int answer = 0;
    for(int i = 0;i<n;i++){
        int x,y;
        x = height(i).first;
        y = height(i).second;

        for(int j = 0;j<n;j++){
            if(x < height(j).first && y < height(j).second){
                answer++;
            }
        }
        result.push_back(answer + 1);
        answer = 0;
    }

    cout<<result(0);
    for(int i = 1;i<result.size();i++){
        cout<<" "<<result(i);
    }
    cout<<endl;
    return 0;
}