Post

[백준/C++] 8979번: 올림픽

[백준/C++] 8979번: 올림픽

문제 & 링크

https://www.acmicpc.net/problem/8979

풀이

  1. vector 자료구조를 사용하여 입력받을 각 나라별 금, 은, 동메달의 개수를 저장한다.

  2. 등수를 알고 싶은 국가와 국가 번호가 같을 때 해당 인덱스를 저장한다.

  3. for문을 이용하여 등수를 알고 싶은 국가와 그 외 다른 모든 국가를 비교하며 rank 변수를 조정한다.

* 자기 자신보다 등수가 높은 국가가 몇 개인지 알면 되기에, 금 -> 은 -> 동 순서로 메달을 비교하며 순위를 떨어뜨린다(변수 값은 상승).

코드

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
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int N, K;
    
    cin >> N >> K;
    
    vector<int> G;
    vector<int> S;
    vector<int> B;
    
    int num, g, s, b;
    int idx;
    for (int i = 0; i < N; i++) {
        cin >> num >> g >> s >> b;
        
        if (K == num) idx = i;
        G.push_back(g);
        S.push_back(s);
        B.push_back(b);
    }
    
    int rank = 1;
    for (int i = 0; i < N; i++) {
        if (G[i] > G[idx]) rank++;
        else if (G[i] == G[idx]) {
            if (S[i] > S[idx]) rank++;
            else if (S[i] == S[idx]) {
                if (B[i] > B[idx]) rank++;
            }
        }
    }
    
    cout << rank;
    
    return 0;
}
This post is licensed under CC BY 4.0 by the author.