Algorithm/BOJ

[BOJ] #8979 올림픽

jHoon0223 2024. 2. 16. 15:09

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

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net


그간 계속 그래프 탐색 문제들 위주로만 풀다가 오랜만에 기본 구현 문제를 풀어보았다. 백준 문제집에 "IT기업 및 대기업 계열사 코테보면서 비슷했던 문제들" 이란 이름의 문제집이었는데, 정말 실제 코테에 나올법한 문제들이 많은 것 같았다. 이미 풀었던 문제들도 몇몇 있었는데, 이 문제는 이번에 처음 풀어봤다.

난이도 자체는 실버5여서 오 금방 풀겠는데? 하고 시작했다가 의외로 신경써야할 부분이 많아서 좀 애를 먹었다. 요구사항 자체는 간단하지만, 실제 구조체를 선언하고 정렬하는 함수를 따로 설정해서 구현하고, 정렬 후 동점인 국가가 나오면 그 국가들도 처리해주어야 해서 생각보다 간단하지만은 않았던 문제였다.

부분부분마다 쓰이는 매커니즘이나 노하우들이 당연히 원래는 알고 있었던 것들이지만, 그것들을 여럿 조합하고 문제에서 주어진 조건에 맞게 변환하여 실제로 적용하는것이 아직은 부족하다 느꼈다. 오히려 그래프 탐색하는 BFS나 다익스트라 문제들이 난이도 자체는 더 어렵긴 할 것이다. 확실히 기본 알고리즘이나 자료구조들을 어느정도 숙지했으면 이렇게 실제 코테에 나오는 유형들을 따로 공부해야겠다고 느낀 계기였던 것 같다.

아 그리고 서브태스크가 따로 주어진 문제였다. 제출하자마자 100점이 뜨긴 했지만 그렇지 못한 경우에는 더 완벽하게 구현할 수 있도록 노력해야 할듯하다.

#include <iostream>
#include <algorithm>

#define MAX 1005

using namespace std;

struct Country {
    int num;
    int gold;
    int silver;
    int bronze;
    int final_num;
} typedef con;

bool cmp (con c1, con c2) {
    if(c1.gold != c2.gold){
        return c1.gold > c2.gold;
    }
    else if(c1.gold == c2.gold && c1.silver != c2.silver){
        return c1.silver > c2.silver;
    }
    else if(c1.silver == c2.silver && c1.bronze != c2.bronze){
        return c1.bronze > c2.bronze;
    }
}

int main() {
    int N,K;
    cin >> N >> K;

    con cons[MAX];

    for (int i=0; i<N; i++) {
        cin >> cons[i].num >> cons[i].gold 
        >> cons[i].silver >> cons[i].bronze;
    }

    sort(cons,cons+N,cmp);

    for(int i=0; i<N; i++) cons[i].final_num = i+1;

    for (int i=0; i<N; i++) {
        if (cons[i].gold==cons[i+1].gold && cons[i].silver==cons[i+1].silver
        && cons[i].bronze==cons[i+1].bronze)
            cons[i+1].final_num = cons[i].final_num;
    }

    for (int i=0; i<N; i++) {
        if (cons[i].num == K) {
            cout << cons[i].final_num << '\n';
            break;
        }
    }

    return 0;
}

728x90

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] #25757 임스와 함께하는 미니게임  (0) 2024.02.20
[BOJ] #5014 스타트링크  (0) 2024.02.16
[BOJ] #4963 섬의 개수  (0) 2024.02.15
[BOJ] #11286 절댓값 힙  (0) 2024.02.14
[BOJ] #1238 파티  (0) 2024.02.08