Machineboy空

1813: 논리학 교수 - Ad Hoc 본문

Computer/Coding Test

1813: 논리학 교수 - Ad Hoc

안녕도라 2024. 7. 2. 12:22

https://www.acmicpc.net/problem/1813

문제요약

N개의 말 중에 참인 말의 개수를 구하여라.

 

난이도

Silver 5


풀이 포인트

  • Ad-Hoc의 규칙을 찾아내는 것!

REVIEW

경우의 수를 다 따져야 한다고 생각하니 머리가 아팠고,

무언가 예외없는 대단한 규칙을 발견해야만 할 것 같아 부담스러운 문제였는데

AdHoc이라는 알고리즘이 있구나!를 새로이 알게 되었다.


CODE

#include <bits/stdc++.h>
using namespace std;

int n, s;
int a[51];
bool hasT = false;

int main()
{
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        cin >> s;
        a[s]++;
    }

    for (int i = 51; i >= 0; i--)
    {
        if (a[i] == i)
        {
            cout << i;
            hasT = true;
            return 0;
        }
    }

    if (!hasT)
    {
        cout << -1;
    }
}