Problem
Problem URL : 올림픽
[1] Answer Code (18. 04. 15)
#include<iostream>
using namespace std;
typedef struct {
int gold;
int silver;
int bronze;
} country;
int solve(int idx, country *cou, int max){
int rank=1;
for(int i=1; i<=max; i++){
if(cou[idx].gold < cou[i].gold) rank++;
else if(cou[idx].gold == cou[i].gold && cou[idx].silver < cou[i].silver) rank++;
else if(cou[idx].gold == cou[i].gold && cou[idx].silver == cou[i].silver && cou[idx].bronze < cou[i].bronze) rank++;
else continue;
}
return rank;
}
int main(){
country cou[1001];
int n,k;
cin >> n >> k;
for(int i=1; i<=n; i++){
int idx;
scanf("%d",&idx);
scanf("%d%d%d",&cou[idx].gold,&cou[idx].silver,&cou[idx].bronze);
}
printf("%d\n",solve(k, cou, n));
return 0;
}
Code Review
[1] Answer Code (18. 04. 15)
-
정보올림피아드 문제
-
굳은 나의 사고를 깨워준 문제이다.
-
아마 전체를 정렬하고 그 다음 원하는 결과값을 찾으려고 접근할텐데 굳이 그럴필요가 있을까?
-
전체에서 내가 필요한 인덱스가 몇 번째인지만 알면 된다!
-
추가적으로
int solve(int idx, country *cou, int max) 여기에서country *cou
사용법 제대로 익히자. -
Delete - reSolve (18. 08. 03)