문제가 길어 링크와 간단한 스샷으로 대체하겠습니다.
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<string> dogam;
vector<string> quiz;
int n, m;
int p;
int res;
string pokemon;
string q;
string str;
cin >> n >> m;
for(int i =1; i <= n; i++){
cin >> pokemon;
dogam.push_back(pokemon);
}
for(int i = 0; i < m; i++){
cin >> q;
quiz.push_back(q);
}
for(int i = 0; i <m; i++){
str = quiz[i];
if(str[0] >= 'A' && str[0] <= 'Z'){
p = find(dogam.begin(), dogam.end(), str) - dogam.begin();
p++;
cout << p;
}
else{
res = stoi(quiz[i]);
cout << dogam[res];
}
cout << '\n';
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n, m, res;
string s;
map<int, string> dogam;
map<string, int> rdogam;
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 >> s;
rdogam[s] = i+1;
dogam[i+1] = s;
}
for(int i = 0; i < m; i++){
cin >> s;
if(atoi(s.c_str()) == 0){
cout << rdogam[s] <<'\n';
}
else{
cout << dogam[atoi(s.c_str())] <<'\n';
}
}
}
오답 분석
정답 풀이
자꾸 구현 아이디어가 떠오르고 설계한다고 하는데 막상 처음 쓴 코드는 굉장히 복잡하고 비합리적이다.
몇 번 계속 바꿔줘야 좀 봐줄만한 코드가 나오는거 같다...
좀 더 합리적으로 생각해서 코드를 짜려고 노력해봐야겠다.