반응형
문제링크: https://www.acmicpc.net/problem/8979
쉬운 구현문제입니다.
- 금메달 수가 더 많은 나라
- 금메달 수가 같으면, 은메달 수가 더 많은 나라
- 금, 은메달 수가 모두 같으면, 동메달 수가 더 많은 나라
위의 기준으로 배열을 정렬하고 같은 순위인 나라의 갯수를 세어준 후 빼주면 되는 쉬운 문제였습니다.
C++의 sort함수가 익숙하지 않으신분들은 아래 포스팅을 참고해주세요
https://gusdnr69.tistory.com/52?category=765773
정답코드입니다.
#include <iostream>
#include <algorithm>
using namespace std;
struct country {
int country_number;
int gold;
int sliver;
int bronze;
};
bool cmp(country a, country b) {
if (a.gold > b.gold) return true;
else if (a.gold == b.gold) {
if (a.sliver > b.sliver) return true;
if (a.sliver == b.sliver) {
if (a.bronze > b.bronze) return true;
}
}
return false;
}
country arr[1001];
int n, k;
int n1, n2, n3, n4;
int result = 0,val=0;
int main() {
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> n1 >> n2 >> n3 >> n4;
arr[i].country_number = n1;
arr[i].gold = n2;
arr[i].sliver = n3;
arr[i].bronze = n4;
}
sort(arr, arr + n, cmp);
for (int i = 0; i < n; i++) {
if (arr[i].country_number == k) {
result = i;
break;
}
}
for (int i = result - 1;; i--) {
if (arr[i].gold != arr[result].gold || arr[i].sliver != arr[result].sliver || arr[i].bronze != arr[result].bronze) {
break;
}
val++;
}
cout << result - val + 1 << endl;
}
구조체를 통해서 구현을 했습니다.
천천히 보시고 꼭 직접 구현해보세요!
화이팅 :)
반응형
'알고리즘 > 구현' 카테고리의 다른 글
[백준] 1188-음식 평론가(C++) (0) | 2020.05.03 |
---|---|
[백준] 1022-소용돌이 예쁘게 출력하기(C++) (0) | 2020.04.28 |
[백준] 5567-결혼식(C++) (0) | 2020.04.27 |
[백준] 2851-슈퍼 마리오(C++) (0) | 2020.04.26 |
[백준] 1748-수 이어 쓰기 1(C++) (0) | 2020.04.26 |