[백준] 1620 나는야 포켓몬 마스터 이다솜

https://www.acmicpc.net/problem/1620

문제

...
(생략)
...
오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네.

풀이

도감 번호와 이름을 key, value로 가지는 딕셔너리와
이름과 번호를 key, value로 가지는 딕셔너리를 만들어서 풀이함

Python

n, m= map(int, input().split())
dict1 = {}; dict2 = {}; answer=[]
for i in range(n):
    temp = input()
    dict1[str(i+1)] = temp
    dict2[temp] = str(i+1) 
for _ in range(m):
    temp = input()
    answer.append(dict1[temp] if temp.isdigit() else dict2[temp])
print("\n".join(answer))

C++

#include <bits/stdc++.h>
using namespace std; 
int n, m;
string temp;
map <string, int> map_1;
map <int, string> map_2;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    cin>>n>>m;
    for (int i = 0; i < n; i++)
    {
        cin>>temp;
        map_1[temp] = i+1; 
        map_2[i+1] = temp;
    }
    for (int i = 0; i < m; i++)
    {
        cin >> temp;
        if(atoi(temp.c_str()) == 0){ //문자열이면
            cout << map_1[temp] << "\n";
        }else{
            cout << map_2[atoi(temp.c_str())] << "\n";
        }
    }
    return 0;
}
}

계속 시간초과가 떠서 스트레스받았는데
"\n"이 아닌 endl 로 하면 시간이 더 오래걸린다는 사실을 알아냈다.

좋은 웹페이지 즐겨찾기