반응형
https://www.acmicpc.net/problem/1620
문제보다 입력 출력이 더 중요하다.
문제 해결 알고리즘
맵을 사용해서 키값을 각각 문자열과 숫자에 부여한 맵을 두개 만들어서 입력에 포켓몬 이름이 나오든 숫자가 나오든 바로 출력 할 수 있게 한다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
cin.tie(0);
ios_base::sync_with_stdio(false);
int N, M; cin >> N >> M;
map<int, string> m1;
map<string, int> m2;
for(int i=0;i<N;i++){
string str; cin >> str;
m1.insert(pair<int, string>(i+1, str));
m2.insert(pair<string, int>(str, i+1));
}
for(int i=0;i<M;i++){
string str; cin >> str;
if(isdigit(str[0])) cout << m1[stoi(str)] << '\n';
else cout << m2[str] << '\n';
}
}
메모
계속 시간 초과가 나길래 봤는데 아래의 코드를 입력하지 않아서 틀린 것이었다.
cin.tie(0);
ios_base::sync_with_stdio(false);
cout, cin은 입출력이 printf, scanf보다 두 배정도 느려서 위의 코드를 입력해주어야 시간초과가 나지 않는다.
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[DP] BOJ 1699 제곱수의 합 (0) | 2021.10.02 |
---|---|
[구현] BOJ 2004 조합 0의 개수 (0) | 2021.09.29 |
[백 트래킹] BOJ 15666 N과 M (12) (0) | 2021.09.18 |
[자료구조, 스택] BOJ 1874 스택 수열 (0) | 2021.09.11 |
[플로이드-와샬] BOJ 11404 플로이드 (0) | 2021.09.10 |