Koala - 15기/기초 알고리즘 스터디
[백준/C++] 11652번: 카드
.우디.
2024. 7. 9. 02:24
문제 & 링크
https://www.acmicpc.net/problem/11652
풀이
!! 범위를 고려하여 long long int 자료형을 사용하여야 함 !!
1. map 자료구조를 사용하여 입력받을 카드의 숫자를 키, 해당 카드가 나온 횟수를 값으로 가지도록 한다.
* map 자료구조의 특징으로는 키와 값을 쌍으로 가진다는 것, 레드-블랙 트리(균형 이진 트리)를 사용하여 키를 오름차순으로 정렬하여 관리한다는 것, 중복 키를 허용하지 않는다는 것 등이 있다.
2. 입력받은 숫자를 map 자료구조에 삽입하고 해당 키와 쌍으로 이루어진 값을 1 증가시킨다.
3. auto를 이용해서 map을 순회한 후, 최빈값을 찾아낸다.
* auto는 변수의 타입을 자동으로 추론하여 선언할 수 있게 해주는 기능으로, 이 문제를 해결할 때는 map의 iterator(반복자)로 사용되었다.
코드
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
int N;
map<long long, int> M;
cin >> N;
for (int i = 0; i < N; i++) {
long long x;
cin >> x;
M[x]++;
}
int max = 0;
long long ans;
for (auto i = M.begin(); i != M.end(); i++) {
if (max < i -> second) {
max = i -> second; // map의 값(int)
ans = i -> first; // map의 키(long long)
}
}
cout << ans;
}