IDEA
1 : 1 로 비교하며 자신보다 덩치가 큰 사람이 몇 명인지 구해야 자신의 등수가 나오는 문제라고 생각을 했다.
등수는 자신보다 큰 사람에 의해 결정되기 때문에 1, 2, 2, 2, 5 등과 같이 3,4등이 안나올 수 있다.
그래서 정렬은 안되고 1:1 즉 $N^{2}$번 계산해야된다. 전체 사람의 수가 50밖에 되지 않아 최악의 경우에도 2500번 연산 밖에 안돼 그냥 이중 FOR문을 사용했다.
1. 1부터 N까지 모든 사람과 자신의 덩치를 비교한다.
- 자신의 인덱스와 같은 것이 나오면 PASS
2. 키,몸무게 둘 다 크다면 grade (등수) 를 하나 더해준다.
- 단, 이때 자신보다 큰 사람이 없는 경우 1등이기때문에 grade를 1로 초기화해준다.
코드
pair 벡터를 사용하여 키,몸무게 둘 다 넣어주었다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<pair<int,int>>info;
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int weight, height;
scanf("%d %d", &weight, &height);
info.push_back({ weight,height });
}
for (int i = 0; i < n; i++) {
int grade = 1;
for (int j = 0; j < n; j++) {
if (i == j) continue;
if (info[j].first > info[i].first && info[j].second > info[i].second) grade++;
}
printf("%d ", grade);
}
}
'알고리즘 > 백준 단계별로 풀기 (12.26 ~ 12.31)' 카테고리의 다른 글
큐 - 백준 1186번 요세푸스 문제0 (0) | 2020.12.27 |
---|---|
큐 - 백준 2164번 카드2 (0) | 2020.12.27 |
스택 - 백준 4949번 균형잡힌 세상 (0) | 2020.12.27 |
브루트포스 - 백준 2798번 블랙잭 (0) | 2020.12.26 |
브루트포스 - 백준 2231번 분해합 (0) | 2020.12.26 |