본문 바로가기
백준(C++)/0000_부수적인 문제들

[BOJ/C++]1205번_등수 구하기

by 코잼민 2024. 7. 8.

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