반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 8979 올림픽 본문

백준(Baekjoon) 문제

백준 8979 올림픽

huiung 2019. 9. 5. 07:50
반응형

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

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 각 국가의 금메달 은메달 동메달 개수를 입력받고 K국가의 등수를 구하는 문제입니다.

 

등수를 구하는 기준은 금메달 , 은메달, 동메달이 많은 순서로 우선순위가 정해집니다. 모든 메달의 개수가 동일할 경우 에는 동일 등수로 정해집니다. 

 

K국가의 등수를 알고싶다면 K국가보다 등수가 높은 국가들을 단순히 세주기만 하면 될것입니다. 따라서 K국가의 금,은,동메달의 개수를 따로 저장해놓고 전체국가를 돌면서 K국가보다 금,은,동메달의 개수가 더많은 국가들을 세어주면 해결이 됩니다.

 

다음은 코드입니다.

 

#include <iostream>

using namespace std;


struct country {
	int ind;
	int gold,silver,bronze;
} c1[1001];

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int N,K; cin >> N >> K;
	int mygold,mysilver,mybronze;

	for(int i = 0; i < N; i++) {
		cin >> c1[i].ind >> c1[i].gold >> c1[i].silver >> c1[i].bronze;	
		if(c1[i].ind == K) {
			mygold = c1[i].gold;
			mysilver = c1[i].silver;
			mybronze = c1[i].bronze;
		}
	}
	int cur = 1;
	for(int i = 0; i < N; i++) {
		if(c1[i].ind == K) continue;
		
		if(c1[i].gold > mygold) cur++;
		else if(c1[i].gold == mygold && c1[i].silver > mysilver) cur++;
		else if(c1[i].gold == mygold && c1[i].silver == mysilver && c1[i].bronze > mybronze) cur++;
	}
	cout<<cur;	
	return 0;
}
반응형