1#include <bits/stdc++.h>
2using namespace std;
3
4struct medal {
5 int number;
6 int gold;
7 int silver;
8 int bronze;
9};
10bool cmp(medal a, medal b) {
11 if (a.gold != b.gold) return a.gold > b.gold;
12 if (a.silver != b.silver) return a.silver > b.silver;
13 return a.bronze > b.bronze;
14
15}
16int main() {
17 cin.tie(0)->sync_with_stdio(false);
18 int n = 0, target = 0, rank = 0;
19 cin >> n;
20 cin >> target;
21
22 medal* arr = new medal[n];
23
24 for (int i = 0; i < n; i++) {
25 cin >> arr[i].number >> arr[i].gold >> arr[i].silver >> arr[i].bronze;
26 }
27 sort(arr, arr + n, cmp);
28
29 for (int i = 0; i < n; i++) {
30 if (i == 0 || (arr[i].gold != arr[i - 1].gold || arr[i].silver != arr[i - 1].silver || arr[i].bronze || arr[i - 1].bronze)) {
31 rank = i + 1;
32 }
33
34 if (arr[i].number == target) {
35 cout << rank << "\n";
36 break;
37 }
38 }
39
40 delete[] arr;
41 return 0;
42}
문제
-
1번째 줄에 국가개수, 특정 국가번호가 주어진다.
-
2번째 줄에 국가번호, 금메달 수, 은메달 수, 동메달 수가 주어진다.
-
특정 국가번호가 몇등인지 출력해야한다.
-
금, 은, 동메달 수가 모두 같다면 같은 등수로 처리한다.
-
만약 공동 2등인 나라가 2개 나오는 경우, 3등은 없다
-
TC
- input
4 3
1 1 2 0
2 0 1 0
3 0 1 0
4 0 0 1 - ouput
2
- input
해결방법
- 구조체를 이용하여 국가번호, 금, 은, 동메달 수를 저장한다.
- cmp함수를 이용하여 정렬한다.
- 특정 국가번호를 찾아서 등수를 출력한다.
- 같은 등수를 처리하기 위해 변수 rank를 활용하였다.