C++ ๋ฐฑ์ค 1620 _ ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ ๋ฌธ์ ํ์ด
[C++ - ๋ฐฑ์ค 1620] ๋ฌธ์
๋ฌธ์ ์ค๋ช
์ฒซ์งธ ์ค์๋ ๋๊ฐ์ ์๋ก๋์ด ์๋ ํฌ์ผ๋ชฌ์ ๊ฐ์ N์ด๋ ๋ด๊ฐ ๋ง์ถฐ์ผ ํ๋ ๋ฌธ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ ธ. N๊ณผ M์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ธ๋ฐ, ์์ฐ์๊ฐ ๋ญ์ง๋ ์์ง? ๋ชจ๋ฅด๋ฉด ๋ฌผ์ด๋ด๋ ๊ด์ฐฎ์. ๋๋ ์ธ์ ๋ ์ง ์ง๋ฌธ์ ๋ตํด์ค ์ค๋น๊ฐ ๋์ด์์ด.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ํฌ์ผ๋ชฌ์ ๋ฒํธ๊ฐ 1๋ฒ์ธ ํฌ์ผ๋ชฌ๋ถํฐ N๋ฒ์ ํด๋นํ๋ ํฌ์ผ๋ชฌ๊น์ง ํ ์ค์ ํ๋์ฉ ์ ๋ ฅ์ผ๋ก ๋ค์ด์. ํฌ์ผ๋ชฌ์ ์ด๋ฆ์ ๋ชจ๋ ์์ด๋ก๋ง ์ด๋ฃจ์ด์ ธ์๊ณ , ๋, ์... ์ฒซ ๊ธ์๋ง ๋๋ฌธ์์ด๊ณ , ๋๋จธ์ง ๋ฌธ์๋ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ด. ์์ฐธ! ์ผ๋ถ ํฌ์ผ๋ชฌ์ ๋ง์ง๋ง ๋ฌธ์๋ง ๋๋ฌธ์์ผ ์๋ ์์ด. ํฌ์ผ๋ชฌ ์ด๋ฆ์ ์ต๋ ๊ธธ์ด๋ 20, ์ต์ ๊ธธ์ด๋ 2์ผ. ๊ทธ ๋ค์ ์ค๋ถํฐ ์ด M๊ฐ์ ์ค์ ๋ด๊ฐ ๋ง์ถฐ์ผํ๋ ๋ฌธ์ ๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์. ๋ฌธ์ ๊ฐ ์ํ๋ฒณ์ผ๋ก๋ง ๋ค์ด์ค๋ฉด ํฌ์ผ๋ชฌ ๋ฒํธ๋ฅผ ๋งํด์ผ ํ๊ณ , ์ซ์๋ก๋ง ๋ค์ด์ค๋ฉด, ํฌ์ผ๋ชฌ ๋ฒํธ์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅํด์ผํด. ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ์ซ์๋ ๋ฐ๋์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ๋ฌธ์๋ ๋ฐ๋์ ๋๊ฐ์ ์๋ ํฌ์ผ๋ชฌ์ ์ด๋ฆ๋ง ์ฃผ์ด์ ธ. ๊ทธ๋ผ ํ์ดํ !!!
์ ํ ์ฌํญ
- ์๊ฐ ์ ํ : 2์ด
- ๋ฉ๋ชจ๋ฆฌ ์ ํ : 256 MB
์ถ๋ ฅํ์
์ฒซ์งธ ์ค๋ถํฐ ์ฐจ๋ก๋๋ก M๊ฐ์ ์ค์ ๊ฐ๊ฐ์ ๋ฌธ์ ์ ๋ํ ๋ต์ ๋งํด์คฌ์ผ๋ฉด ์ข๊ฒ ์ด!!!. ์ ๋ ฅ์ผ๋ก ์ซ์๊ฐ ๋ค์ด์๋ค๋ฉด ๊ทธ ์ซ์์ ํด๋นํ๋ ํฌ์ผ๋ชฌ์ ์ด๋ฆ์, ๋ฌธ์๊ฐ ๋ค์ด์์ผ๋ฉด ๊ทธ ํฌ์ผ๋ชฌ์ ์ด๋ฆ์ ํด๋นํ๋ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ผ. ๊ทธ๋ผ ๋กํ~
์ ์ถ๋ ฅ ์์
26 5
Bulbasaur
Ivysaur
Venusaur
Charmander
Charmeleon
Charizard
Squirtle
Wartortle
Blastoise
Caterpie
Metapod
Butterfree
Weedle
Kakuna
Beedrill
Pidgey
Pidgeotto
Pidgeot
Rattata
Raticate
Spearow
Fearow
Ekans
Arbok
Pikachu
Raichu
25
Raichu
3
Pidgey
Kakuna
ํ์ด ๊ณผ์
์๊ฐ์ ๋จ์ถํ๊ธฐ ์ํด ์๋ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ค.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
์ฌ์ฉํ๋ ์ด์ ๋? ์ฌ๋ฌ ์ปดํ์ผ๋ฌ์ sync๋ฅผ ๋ง์ถ๊ธฐ ์ํด ์ถ๊ฐ
input์ผ๋ก ๋ฌธ์์ด์ด ๋ค์ด์ฌ ์๋ ์๊ณ , ์ ์๊ฐ์ด ๋ค์ด์ฌ ์๋ ์์ผ๋ฏ๋ก
๋ฐฐ์ด ๋๊ฐ์ง๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ
string -> int ์ผ ๋๋
- map ์๊ฐ ๋ณต์ก๋ O (logN)
- array ์๊ฐ ๋ณต์ก๋ O(N)
int -> string ์ผ ๋๋
- map ์๊ฐ ๋ณต์ก๋ O(logN)
- array ์๊ฐ ๋ณต์ก๋ O (1)
์ด์ฌ์ string์์ int ๊ฐ์ ์ฐพ์ ๋๋ map
int์์ string ๊ฐ์ ์ฐพ์ ๋๋ array๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค!
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n, k;
cin >> n >> k;
string arr[100004];
map<string, int> name_map2;
string temp;
for (int i = 1; i <= n; i++) {
cin >> temp;
arr[i] = temp;
name_map2[temp] = i;
}
for (int j = 0; j < k; j++) {
cin >> temp;
if (atoi(temp.c_str()) == 0) {
cout << name_map2[temp] << '\n';
} else {
cout << arr[atoi(temp.c_str())] << '\n';
}
}
return 0;
}