반응형
출처: https://www.acmicpc.net/problem/11652
Input
5
1
2
1
2
1
Output
1
두 가지 방법으로 문제를 해결할 수 있습니다. (정렬, Hash)
정렬
{숫자, 나타난 횟수}를 한 쌍으로 데이터를 저장한 후 아래 두 기준으로 정렬합니다.
① 나타난 횟수가 많은 순
② 숫자가 작은 순
Hash
숫자(long long)를 key값으로 해서 나타난 횟수를 Value 값으로 저장합니다.
Hash를 순회하면서 가장 많이 나타난 횟수 중 가장 작은 수를 탐색합니다.
// Hash를 이용한 풀이
#include <iostream>
#include <cstdio>
#include <map>
#include <limits.h>
using namespace std;
typedef long long LL;
map<LL, int> deck;
int N, maxVal = -1;
LL val;
void input() {
scanf("%d", &N);
for (int i = 0; i < N; i++){
scanf("%lld", &val);
deck[val]++;
}
}
int main(){
// freopen("input.txt", "r", stdin);
input();
for (auto it = deck.begin(); it != deck.end(); it++){
// 나타난 횟수가 더 많은 경우만 갱신 (같은 경우는 작은 숫자가 우선시되므로 continue)
if (it->second > maxVal){
maxVal = it->second;
val = it->first;
}
}
printf("%lld\n", val);
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 11404 플로이드 (0) | 2021.02.25 |
---|---|
[BOJ] 백준 12791 Starman (0) | 2021.02.25 |
[BOJ] 백준 2884 알람 시계 (0) | 2021.02.24 |
[BOJ] 백준 3665 최종 순위 (0) | 2021.02.24 |
[BOJ] 백준 2056 작업 (0) | 2021.02.24 |
댓글