Problem
Problem URL : 카드
[1] Answer Code (18. 09. 26)
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
cin >> n ;
map<long long,int> m;
map<long long,int>::iterator iter;
for (int i=0; i<n; i++){
long long s;
cin >> s;
if( m.find(s) == m.end())
m.insert( {s,1} );
else{
iter = m.find(s);
m[s] = iter->second + 1;
}
}
long long ans_idx;
int ans_value = 0;
// [1]
for(auto & it : m){
if( it.second > ans_value ){
ans_value = it.second;
ans_idx = it.first;
}
}
// [2]
for(iter = m.begin(); iter != m.end(); iter++){
if( iter->second > ans_value ){
ans_value = iter->second;
ans_idx = iter->first;
}
}
cout << ans_idx << endl;
return 0;
}
Review
-
map을 사용해서 문제를 해결했다.
-
map을 처음 사용해 봤는데 굉장히 편리하다.
-
[1]과 [2] 둘 다 사용해도 되지만 [1]이 더 간편하다.
-
처음엔 map<string,int> 로 선언을 했다.
-
그런데 숫자가 아니기 때문에 “12345”와 “987”, “-345”에 대한 순서가 내가 생각하는 것처럼 오름차순이 아니였다.
-
그래서 string -> long long 으로 바꾸니 맞았다.
-
범위가 크다고 무작정 string을 사용하면 안되겠다.