반응형
문제 출처 :
https://www.acmicpc.net/problem/8979
알고리즘 분석 :
문제 해결에 필요한 사항
1. 정렬
2. 시뮬레이션
정렬 알고리즘 및 순위 표현하는 과정을 잘 표현하면 쉽게 해결할 수 있는 문제이다.
필자는 문제를 제대로 읽지 않아 4번의 WA를 받았는데
k번째 순위가 아닌 k국가의 순위임을 명심하고 풀면 좋을 것 같다.
정렬 알고리즘은 comp 함수 내에서 설명되어있지만,
금, 은, 동 순서이니 그에 맞게 if문을 써서 순서대로 정렬 될 수 있도록 해주면 된다.
소스 코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef struct _INFO_ { int nation; int gold; int silver; int bronze; int rank; }INFO; INFO arr[1001]; bool comp(INFO const &a, INFO const &b) { if (a.gold > b.gold) return a.gold > b.gold; else if (a.gold == b.gold && a.silver > b.silver) return a.silver > b.silver; else if (a.gold == b.gold && a.silver == b.silver && a.bronze > b.bronze) return a.bronze > b.bronze; return false; } int main() { int n, k; scanf("%d %d", &n, &k); for (int i = 0; i < n; i++) scanf("%d %d %d %d", &arr[i].nation, &arr[i].gold, &arr[i].silver, &arr[i].bronze); sort(arr, arr + n, comp); int rank = 1; int gold = arr[0].gold; int silver = arr[0].silver; int bronze = arr[0].bronze; arr[0].rank = rank; for (int i = 0; i < n; i++) { if (arr[i].gold == gold && arr[i].silver == silver && arr[i].bronze == bronze) { while (arr[i].gold == gold && arr[i].silver == silver && arr[i].bronze == bronze) { arr[i].rank = rank; i++; } rank = i + 1; i--; } else { gold = arr[i].gold; silver = arr[i].silver; bronze = arr[i].bronze; while (arr[i].gold == gold && arr[i].silver == silver && arr[i].bronze == bronze) { arr[i].rank = rank; i++; } rank = i + 1; i--; } } for(int i = 0 ; i < n; i ++) if(arr[i].nation == k) cout << arr[i].rank; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[3048번] 개미 (0) | 2017.04.13 |
---|---|
[11404번] 플로이드 (2) | 2017.04.12 |
[10868번] 최소값 (0) | 2017.04.12 |
[2414번] 게시판 구멍 막기 (0) | 2017.04.12 |
[1867번] 돌멩이 제거 (0) | 2017.04.12 |