문제 링크 : https://www.acmicpc.net/problem/1620
문제 풀이
해시(unordered_map)를 사용하여 풀이하였다.
포켓몬 이름(string)을 key로 하고, 도감번호(int)를 value로 하는 unordered_map을 생성 후, 입력받는 대로 저장을 한다.
동시에 도감번호를 index로 하는 배열에도 포켓몬 이름을 저장한다.
다음으로 질문이 들어오는데 만약 이것이 int라면 당연히 앞 글자가 digit이기 때문에 isdigit()을 사용하여 도감번호를 index로 하는 배열에서 찾도록 하고, string인 경우는 unordered_map에서 찾으면 된다.
#include <iostream>
#include <unordered_map>
using namespace std;
int n, m;
string name, question;
unordered_map<string, int> pomon;
string arr[100005];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> name;
pomon.insert({name, i});
arr[i] = name;
}
while(m--){
cin >> question;
if(isdigit(question[0])) cout << arr[stoi(question)] << "\n";
else cout << pomon[question] << "\n";
}
}
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
(C++) 백준 1715번 - 카드 정렬하기 (0) | 2023.06.17 |
---|---|
(C++) 백준 11286번 - 절대값 힙 (0) | 2023.06.16 |
(C++) 백준 7785번 - 회사에 있는 사람 (0) | 2023.05.22 |
(C++) 백준 1806번 - 부분합 (1) | 2023.05.22 |
(C++) 백준 2230번 - 수 고르기 (0) | 2023.05.22 |