【白俊】10816番カード2
【白俊】10816番カード2
質問リンク:https://www.acmicpc.net/problem/10816
問題とI/O
質問へのアクセス
最初はバイナリ探索を考え、ハッシュの使い方も考えました.ハッシュ関数を用いるとO(1)の時間内に値を見つけることができるのでhash mapを用いて実現する.
まず入力を受信し,ターゲット数をハッシュテーブルに格納し,ルートにハッシュテーブルの値があるか否かを判断し,ない場合はスキップしてkeyにvalue+1を行う.
最終時間複雑度はO(N)であるべきである.ハッシュテーブルでの検索に要する時間はO(1)であるが,N個の値を検索しなければならないからである.
コード実装
#include <iostream>
#include <unordered_map>
using namespace std;
int target[500001];
int sanggeon[500001];
int targetNum, haveNum;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
unordered_map<int, int> hashMap;
cin >> haveNum;
for(int i = 0 ; i < haveNum ; i++){
cin >> sanggeon[i] ;
}
cin >> targetNum;
for(int i = 0 ; i < targetNum ; i++){
cin >> target[i];
hashMap[target[i]] = 0;
}
for(int i = 0 ; i < haveNum ; i++){
auto it = hashMap.find(sanggeon[i]);
if(it != hashMap.end()){
it->second = it->second + 1;
}
}
for(int i = 0 ; i < targetNum ; i++){
auto it = hashMap.find(target[i]);
cout << it->second << " ";
}
}
評価
久しぶりにアルゴリズムの問題をして、とても面白くて、、、ほほほ
Reference
この問題について(【白俊】10816番カード2), 我々は、より多くの情報をここで見つけました
https://velog.io/@kpg0518/백준-10816번-숫자-카드2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <unordered_map>
using namespace std;
int target[500001];
int sanggeon[500001];
int targetNum, haveNum;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
unordered_map<int, int> hashMap;
cin >> haveNum;
for(int i = 0 ; i < haveNum ; i++){
cin >> sanggeon[i] ;
}
cin >> targetNum;
for(int i = 0 ; i < targetNum ; i++){
cin >> target[i];
hashMap[target[i]] = 0;
}
for(int i = 0 ; i < haveNum ; i++){
auto it = hashMap.find(sanggeon[i]);
if(it != hashMap.end()){
it->second = it->second + 1;
}
}
for(int i = 0 ; i < targetNum ; i++){
auto it = hashMap.find(target[i]);
cout << it->second << " ";
}
}
Reference
この問題について(【白俊】10816番カード2), 我々は、より多くの情報をここで見つけました https://velog.io/@kpg0518/백준-10816번-숫자-카드2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol