dev-logs

백준 10266번 본문

공부/알고리즘

백준 10266번

두룹두두 2019. 6. 26. 18:07

c++  unordered_map 을 사용하여 구현했다. 그런데 그냥 배열로도 풀어도 된다!

#include <iostream>
//#include <hash_map>
#include <unordered_map>
#include <cstdio>
#include <string>

using namespace std;

unordered_map<int, int> clock1;
unordered_map<int, int> clock2; 

int n;

string func10266()
{
    cin>>n;
    
    unordered_map<int, int>::iterator finder;
    for(int i=0; i<n; i++)
    {
        int tmp;
        cin >> tmp;
        
        int key = tmp%360;

        finder = clock1.find(key);
        if(finder != clock1.end())
        {
            //같은 키 존재하면 개수++
            finder->second = (finder->second)++;
        }
        else
        {
            //존재하지 않다면 삽입
            clock1.insert(unordered_map<int ,int>::value_type(key, 1));
        }
    }

    for(int i=0; i<n; i++)
    {
        int tmp;
        cin >> tmp;
        
        int key = tmp%360;

        finder = clock2.find(key);
        if(finder != clock2.end())
        {
            //같은 키 존재하면 개수++
            finder->second = (finder->second)++;
        }
        else
        {
            //존재하지 않다면 삽입
            clock2.insert(unordered_map<int ,int>::value_type(key, 1));
        }
    }


    
    unordered_map<int, int>::iterator finder2;
    //비교
    for(finder=clock1.begin(); finder!=clock1.end(); finder++)
    {
        int key = finder->first;
        int cnt1 = finder->second;

        finder2 = clock2.find(key);
        if(finder2 != clock2.end())
        {
            //key exist, compare cnt
            int cnt2 = finder2->second;
            if(cnt1 != cnt2)
                return "impossible";
        }
        else
        {
            return "impossible";
        }
        
    }

    return "possible";

    // cout<<clock1.size()<<endl;
    // for(finder = clock1.begin(); finder!=clock1.end(); finder++){
    //     cout<<finder->first<<"_"<<finder->second<<" ";
    // }
    
    
}

int main(){
    
    cout<< func10266() <<endl;



    return 0;
}
Comments