๋ฌธ์
์ฝ๋
#include <iostream>
#include <map>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N, M; cin>>N>>M;
multimap<int, string> m;
for(int i=0; i<N; i++){
string a; int b;
cin>>a>>b;
m.insert({b,a});
}
for(int i=0; i<M; i++){
int inp; cin>>inp;
cout<< (m.lower_bound(inp)) ->second <<'\n';
}
}
ํ์ด
ํด๋น ์ฃผ์ด์ง๋ ์ ๋ ฅ๊ฐ์ด ์ด๋ ๋ฒ์์ ์ํ๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์ ๋๋ค.
10^5๊น์ง ์ ๋ ฅ์ด ๋ค์ด์ค๊ธฐ์ O(N^2)์ผ๋ก ํ๋ฉด ์๊ฐ ์์ ํด๊ฒฐํ ์ ์์ด binary search๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ผ ํฉ๋๋ค.
์ ๋ map์ ์ด์ฉํด์ ํด๊ฒฐํ์ต๋๋ค.
- key๋ฅผ ์ ํฌ๋ ฅ ์ํ ๊ฐ, value๋ฅผ ์นญํธ๋ก ํ์ฌ multimap์ ์ ์ํฉ๋๋ค.
- multimap์ ์ฌ์ฉ ํ ์ด์ ๋ ์์ ์ ๋ ฅ 2๋ฒ์์ ๋์ผํ ์ํ ๊ฐ์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- unordered_map์ ๊ฒฝ์ฐ๋ hash๋ก ๊ตฌํ๋์ด ์์ง๋ง ์ผ๋ฐ map๊ณผ multimap์ ๋ ๋ ๋ธ๋ ํธ๋ฆฌ๋ก ๊ตฌํ๋์ด ์์ด์ binarysearch ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- lower_bound๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์ ๋ ฅ๊ฐ๋ณด๋ค ์ฒ์์ผ๋ก ๊ฐ๊ฑฐ๋ ๋์ ๊ฐ์ ์นญํธ๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 14267๋ฒ - ํ์ฌ ๋ฌธํ1 (0) | 2022.08.15 |
---|---|
[๋ฐฑ์ค,c++] 19542๋ฒ - ์ ๋จ์ง ๋๋ฆฌ๊ธฐ (0) | 2022.08.14 |
[๋ฐฑ์ค,c++] 2250๋ฒ - ํธ๋ฆฌ์ ๋์ด์ ๋๋น (0) | 2022.08.14 |
[๋ฐฑ์ค,c++] 2812๋ฒ - ํฌ๊ฒ ๋ง๋ค๊ธฐ (0) | 2022.07.29 |
[๋ฐฑ์ค,c++] 13164๋ฒ - ํ๋ณต ์ ์น์ (0) | 2022.07.27 |
[๋ฐฑ์ค,c++] 2138๋ฒ - ์ ๊ตฌ์ ์ค์์น (0) | 2022.07.27 |
๋๊ธ