Koala - 15기/기초 알고리즘 스터디

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

.우디. 2024. 7. 20. 04:08

문제 & 링크

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

 

풀이

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

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

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

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

 

코드

#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;
}