Gidhub BE Developer

[BOJ] 11652. 카드

2018-09-26
goodGid

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을 사용하면 안되겠다.


Comments

Content