[๋ฐฑ์ค(BOJ)] 1620๋ฒ: ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ (Hash, C++)
์ ๋ ฅ
์ฒซ์งธ์ค: ๋๊ฐ์ ์๋ก๋ ํฌ์ผ๋ชฌ ๊ฐ์(N), ๋ค์์ด๊ฐ ๋ง์ถฐ์ผ ํ๋ ๋ฌธ์ ๊ฐ์(M)
๋์งธ์ค: 1~N๋ฒ๊น์ง์ ํฌ์ผ๋ชฌ ํ ์ค์ฉ
์ ์งธ์ค: ๋ง์ถฐ์ผ ํ๋ ๋ฌธ์ M๊ฐ ํ ์ค์ฉ
ํฌ์ผ๋ชฌ ์ด๋ฆ ์ต๋ ๊ธธ์ด: 20
์ถ๋ ฅ
๋ฌธ์ ๊ฐ ์ํ๋ฒณ -> ํฌ์ผ๋ชฌ ๋ฒํธ๋ก ์๋ต
๋ฌธ์ ๊ฐ ํฌ์ผ๋ชฌ ๋ฒํธ -> ํฌ์ผ๋ชฌ ๋ฒํธ์ ํด๋นํ๋ ๋ฌธ์๋ก ์๋ต
M๊ฐ์ ์ค์ ์ฐจ๋ก๋ก ๋ฌธ์ ์ ๋ํ ๋ต์ ์ถ๋ ฅ
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N, M; //N: ํฌ์ผ๋ชฌ ๊ฐ์, M: ๋ง์ถฐ์ผ ํ๋ ๋ฌธ์ ๊ฐ์
scanf("%d %d", &N, &M);
map<string, int> poketmon1;
map<int, string> poketmon2;
vector<string> result;
for(int i=1; i<=N; i++){
char input[21]; //ํฌ์ผ๋ชฌ ์ด๋ฆ ์ต๋ ๊ธธ์ด 20
scanf("%s", &input);
poketmon1.insert({input, i});
poketmon2.insert({i, input});
}
for(int i=0; i < M; i++){
char s[21]; //ํฌ์ผ๋ชฌ ์ด๋ฆ ์ต๋ ๊ธธ์ด 20
scanf("%s", &s);
if(atoi(s) != 0){ // if integer, char * -> int
string result = poketmon2.at(atoi(s));
char *a = &*result.begin();
printf("%s\n", a);
}
else{ //if string
string str1(s);
const char *a = to_string(poketmon1[str1]).c_str();
printf("%s\n", a);
}
}
}
cout
์ด๋ cin
์ ์๊ฐ์ด ์ค๋๊ฑธ๋ ค ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํด์, ์ด cout๊ณผ cin์ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํ๋ค.
atoi(s) == 0
์ด๋ฉด ๋ฌธ์์ด์ด๊ณ , ์๋๋ฉด ์ซ์์ธ ๊ฒ์ผ๋ก ๋ฌธ์์ด, ์ซ์๋ฅผ ํ๋ณํ๋ค.
์ซ์๊ฐ ๋ค์ด์ค๋ฉด atoi(s)
์ธ key๋ก poketmon2 ๋งต์์ ์ฐพ๊ณ , char *์ผ๋ก ๋ณํํด์ scanf
๋ก ์ถ๋ ฅํ๋ค.
๋ฌธ์์ด์ด ๋ค์ด์ค๋ฉด ๋ฌธ์์ด ๊ทธ๋๋ก key๋ก value๋ฅผ ๊ฐ์ ธ์์ int๋ฅผ to_string()
์ผ๋ก string ํ์ผ๋ก ๋ณํ ํ, c.str()
์ผ๋ก string์ char * ํ์ผ๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค.
ํฌ์ผ๋ชฌ ์ด๋ฆ์ ์ต๋๊ธธ์ด๊ฐ 20์ด๋ฏ๋ก, null ํฌํจ 21 ๊ธธ์ด์ ๋ฌธ์ ๋ฐฐ์ด์ ์ ๋ ฅ ๋ฐ์๋ค.
์ซ์์ ๋ฌธ์์ด๋ก ์ ๋ ฅ์ด ๋ค์ด์ฌ ๋ ์ฒ๋ฆฌํ๊ธฐ ์ํ string, int, char * ๊ฐ์ ๋ณํ์ ๋ํด ์๊ฐํด๋ณผ ์ ์์๋ค.
[๋ฐฑ์ค(BOJ)] 1182๋ฒ: ๋ถ๋ถ์์ด์ ํฉ (๋ฐฑํธ๋ํน(Backtracking), C++) (0) | 2021.02.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ (DFS/BFS, C++) (0) | 2021.02.02 |
[๋ฐฑ์ค(BOJ)] 1260๋ฒ: DFS์ BFS (C++) (0) | 2021.01.22 |
[๋ฐฑ์ค(BOJ)] 3273๋ฒ: ๋ ์์ ํฉ (Two Pointers Algorithm, C++) (0) | 2021.01.22 |
[๋ฐฑ์ค(BOJ)] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค (DFS/BFS, C++) (0) | 2021.01.21 |