CodingTest/백준

[c++] 백준 - 8979번: 올림픽

Daybreak21 2023. 5. 21. 20:48

8979번: 올림픽 (acmicpc.net)

 

8979번: 올림픽

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

www.acmicpc.net

 

#include <iostream>
using namespace std;

struct Country {
	int gold;
	int silver;
	int bronze;
};

int main() {

	int N, K, tmp, ranking = 1; cin >> N >> K; 
	Country* ctr = new Country[N+1]; //0번째는 무시

	for (int i = 0; i < N; i++) {
		cin >> tmp;
		cin >> ctr[tmp].gold >> ctr[tmp].silver >> ctr[tmp].bronze;
	}
	for (int i = 1; i < N+1; i++) {
		if (ctr[i].gold > ctr[K].gold) ranking++;
		else if (ctr[i].gold == ctr[K].gold) {
			if (ctr[i].silver > ctr[K].silver) ranking++;
			else if (ctr[i].silver == ctr[K].silver) {
				if (ctr[i].bronze > ctr[K].bronze) ranking++;
			}
		}
	}
	cout << ranking;

	return 0;
}

구조체배열을 이용하여 풀었다. 

전체국가의 등수를 구하는것이 아닌 더 잘한 국가수만 센 값이 정답이기때문에 

K번째국가보다 금메달이 많으면 +1;

금메달수가 같으면 은메달수 비교

은메달수가 같으면 동메달수 비교

 이런문장을 if문으로 구현하였다.