백준 1302 번 문제의 베스트셀러와 같은 방법을 이용하여 풀었다
조건이 매우 큰 수이지만, -2^62 ~ 2^62 사이이므로
long long 타입의 -2^63 ~ 2^63-1 사이의 범위 이내이므로 따로 어렵게 생각할 필요없이
그대로 long long 타입으로 계산하면 되는 문제였다...
난 long long 범위 넘는 줄 알고 string 이용해서 풀려고 하다가 cmp 에서 머리 터졌지만ㅜㅜ 자료형의 중요성!
수가 크다고 바로 string 을 생각 말고 항상 수로 표현 가능한 자료형 범위인지 다시 생각해보고 문제를 풀자
+ 100000 개의 카드이므로 집합 10만개를 0으로 초기화 후, 카드마다 그 수의 인덱스에 카운트++ 하는 방법도
있지만, 그럴 경우 10만개의 메모리를 할당, 차지해야하므로 메모리 낭비가 크니 map 을 이용하는 것이
더 스마트한 코딩이 될 것이라 생각해서 map 을 사용하여 풀었다
https://www.acmicpc.net/problem/11652
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool cmp(pair<ll, int> a, pair<ll, int> b) {
if (a.second == b.second) {
return a.first < b.first;
}
return a.second > b.second;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
ll m;
unordered_map<ll, int> mapi;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> m;
mapi[m]++;
}
vector<pair<ll, int>> v(mapi.begin(), mapi.end());
sort(v.begin(), v.end(), cmp);
cout << v.front().first << "\n";
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 10815/c++] 숫자 카드 (0) | 2022.07.15 |
---|---|
[백준 11866/c++] 요세푸스 문제 0 (0) | 2022.07.14 |
[백준 2581/c++] 소수 (0) | 2022.07.12 |
[백준 1978/c++] 소수 찾기 (0) | 2022.07.12 |
[백준 1439/c++] 뒤집기 (0) | 2022.07.11 |
댓글