https://www.acmicpc.net/problem/1620
풀이법
1) Map 자료형을 두개 사용하면 쉽게 풀 수 있는 문제이다. 겹치지 않는 string 배열이 두개 있다고 생각하여, map<key,value> map<value,key>를 만들어 둠으로서 시간복잡도에서 벗어나지 않게 코딩할 수 있었다.
2) map.count() 함수를 이용하여 해당 key 값에 맞는 value 값이 있는지 확인하여, 입력에 따라 다른 map 자료형에 접근하여 값을 꺼내올 수 있게 하였다.
#include <string>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
int n,k;
int main()
{
cin.tie(0);
ios::sync_with_stdio(false);
cin >> n >> k;
map<string, string> m;
map<string, string> m2;
vector<pair<string, int>> vec;
for(int i=1;i<=n;i++)
{
string s;
cin >> s;
m[s] = to_string(i);
m2[to_string(i)] = s;
}
for (int i = 0; i < k; i++)
{
string s;
cin >> s;
if (m.count(s))
cout << m[s] << "\n";
else if (m2.count(s))
cout << m2[s] << "\n";
}
}
'Coding_Test_C++' 카테고리의 다른 글
BaekJoon 7662번: 이중 우선순위 큐(C++) (0) | 2021.07.06 |
---|---|
BaekJoon 18870번: 좌표 압축(C++) (0) | 2021.07.05 |
BaekJoon 2096번: 내려가기(C++) (0) | 2021.07.03 |
Programmers Level 3: 멀리 뛰기 (0) | 2021.07.02 |
Programmers Level2: 메뉴 리뉴얼 (0) | 2021.07.02 |