dev-logs
백준 10266번 본문
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;
}
'공부 > 알고리즘' 카테고리의 다른 글
[Graph similarity] 그래프 유사도 측정1 (0) | 2021.01.18 |
---|---|
[C] 인접한 직사각형 합쳐서 최대 만들기 (0) | 2018.04.09 |
[C++] 부분집합 경우의 수 구하기 (0) | 2017.12.15 |
Comments