1813
같은 말을 여러번 할 수 있다는 사실을 간과했다.
같은 index가 나올 수 없다는 조건이 있다면
답은 1 아니면 -1이 된다.
그래서 이런 문제는 자연스럽게 중복이 되는지의 여부를 체크해야 한다.
하지만 난 인터넷을 보고 힌트를 얻었다.
문제가 모호하다고 생각했는데, 문제를 자세히 안본 내 잘못이다.
아무튼, 같은 말을 여러번 할 수 있다면 아래 문제의 답은 다음과 같다.
즉, index가 몇 번 불렸는지 count를 세면 된다.
count를 세서 index와 같으면 vector에 저장한다.
그 후, vector에서 가장 큰값을 출력한다.
사실 위 방법대로 할 필요 없이, 반복문을 큰거부터 작은순으로 돌리면서 출력하고 바로 main함수를 종료시키는 방법이 더 깔끔하다.
아, 풀면서 생긴 문젠데 count는 예약어인가..?
#include <iostream>
using namespace std;
int mycount[100000] = {0 ,};
int main(void)
{
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
mycount[temp]++;
}
for (int i = N; i >= 0; i--)
{
if (mycount[i] == i)
{
cout << i << endl;
return (0);
}
}
cout << "-1" << endl;
return (0);
}