[백준] 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 로 하면 시간이 더 오래걸린다는 사실을 알아냈다.
Author And Source
이 문제에 관하여([백준] 1620 나는야 포켓몬 마스터 이다솜), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@youngcheon/백준-1620-나는야-포켓몬-마스터-이다솜
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
...
(생략)
...
오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네.
도감 번호와 이름을 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 로 하면 시간이 더 오래걸린다는 사실을 알아냈다.
Author And Source
이 문제에 관하여([백준] 1620 나는야 포켓몬 마스터 이다솜), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@youngcheon/백준-1620-나는야-포켓몬-마스터-이다솜
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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))
#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 로 하면 시간이 더 오래걸린다는 사실을 알아냈다.
Author And Source
이 문제에 관하여([백준] 1620 나는야 포켓몬 마스터 이다솜), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youngcheon/백준-1620-나는야-포켓몬-마스터-이다솜저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)