https://www.acmicpc.net/problem/1205
##문제 풀기 전 내가 알고 있었어야 할 개념:
1_★ 다른 문제와 다르게 전체 점수 리스트들의 등수를 매기는 것이 아닌, 태수의 점수의 등수 매기기만 중요했던 문제
=> "전체 점수들의 등수 매기기" 유형과 차이를 두자!
2_ 문제 지문과 [예제 입력] 파악하는 것이 조금 느렸다....(이건 연습을 해도해도 안되는 것 같다.)
##설명1 : 예제입력 분석 :
##설명2 : 핵심 풀이와 원리 분
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <iostream>
#include <algorithm>
#include <vector>
#define SIZE 49
using namespace std;
/*
이문제의 핵심 :
1_ 태수의 등수만 판단하면 된다.
2_ 등수안에 들지만, 태수가 들어갈 등수가 P를 넘어서면, =>
*/
int compare(const void* a, const void* b) {
return (*(int*)b - *(int*)a);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N, T_S, P;
int scores[SIZE];
//N: 태수 게임 전 점수개수
//T_S : 태수의 점수
//P : 점수리스트에 최대 점수 개수
//1_ N,T_S,P 입력
cin >> N >> T_S >> P;
//2_ N개의 점수 입력
for (int i = 0; i < N; i++) {
cin >> scores[i];
}
//3_ N개의 점수 큰 순서대로 정렬
qsort(scores, N, sizeof(int), compare);
//4_ 태수의 점수의 등수 판단
int rank = 1;
int cnt = 0;
for (int i = 0; i < N; i++) {
if (scores[i] >= T_S) {//상대 점수 >= 태수 점수
cnt++;
if (scores[i] > T_S) {
rank++;
}
}
}
if (cnt >= P) {
cout << -1 << '\n';
}
else {
cout << rank << '\n';
}
return 0;
}
|
cs |
'백준(C++) > 0000_부수적인 문제들' 카테고리의 다른 글
[BOJ/C++]10824_네 수 (0) | 2024.07.20 |
---|---|
[BOJ/C++]11655번_ROT13 (0) | 2024.07.20 |