(문제)
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;
}