티스토리 뷰


뭔 생각이 부족해서 못 풀었나
struct 까지는 생각 잘했고 compare 함수 로직에서 조금 생각이 부족했음.
그리고 동점일때의 등수 계산에 대해서 문제가 좀 있음.
1. compare 함수 로직
a 와 b를 비교해서 금,은, 동 모두 a>b 의 로직을 취함.
2. 동점인 상황에서 rank 조절
만약 동점인 생황이면 rank 는 정하지 말고 아닐 경우면 rank 올려주고 인풋 기준 충족하면 최종 ans 업데이트하고 출력
뭘 실수해서 틀렸나
compare 로직 작성, rank 계산에서 아이디어.
그래서 뭘 기억하면 되나
구조체를 이용하는 문제를 많이 풀어보는 방법밖에 없다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, k;
struct Country{
int number;
int gold;
int silver;
int bronze;
};
bool compare(Country a, Country b) {
if (a.gold != b.gold) return a.gold > b.gold;
if (a.silver != b.silver) return a.silver > b.silver;
return a.bronze > b.bronze;
}
int main(){
cin.tie(0) -> sync_with_stdio(0);
cin >> n >> k;
vector<Country> cty(n);
for (int i = 0; i < n; i++){
cin >> cty[i].number >> cty[i].gold >> cty[i].silver >> cty[i].bronze;
}
sort(cty.begin(), cty.end(), compare);
int rank = 1;
int targetRank = 0;
for (int i = 0; i < n; ++i) {
if (i > 0 && cty[i].gold == cty[i - 1].gold &&
cty[i].silver == cty[i - 1].silver &&
cty[i].bronze == cty[i - 1].bronze) {
}else{
rank = i + 1;
}
if (cty[i].number == k) {
targetRank = rank;
break;
}
}
cout << targetRank;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2604
- 1535
- 연필공장
- 문자사각형
- 색종이(초)
- 15654
- 숫자사각형3
- 15652
- 문자열찾기
- 단어집합2
- 백준
- 15650
- 문자삼각형1
- 1338
- 볼모으기
- 3427
- 몇번째조합
- 트리 순회
- 5545
- 15651
- 24954
- 2857
- 8129
- 볼 모으기
- 색종이(중)
- 정올
- 1438
- N과M
- 세로읽기
- 1304
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
