[백준 1620] 나는야 포켓몬 마스터 이다솜
백준 1620번 - 나는야 포켓몬 마스터 이다솜
코딩 테스트 준비를 위해 알고리즘 문제 풀기를 시작했다.
제일 먼저 풀고 싶었던 문제인, 포켓몬스터 문제를 풀기로 했다.
사실 친한 형이 메신저로 이런 문제가 있다고 알려주었고, 재밌어보여 풀게 되었다.
앞으로 종종 문제를 풀고 풀이를 올릴 생각이다.
그리고 백준 계정도 새로 팠다.
아! 참고로 나는 c++로 문제를 풀 예정이다.
❓ 문제
너무 길다… 직접 확인하도록 하자.
✏️ 풀이
너무 오랜만이라 vector
, map
, pair
등 STL 문법도 까먹고 찾아보는데 시간을 많이 썼다.
우선, 이 문제를 보았을 때, Python의 Dictionary
, c++의 map
이 가장 먼저 떠올랐다.
Key 값으로 Value를 찾고, 또 Value값으로 Key를 찾는 문제였다.
입력으로 포켓몬 이름을 쭉 받아 list를 생성한다.
그 후, 포켓몬 이름을 입력으로 받으면 출력으로 list에서 해당 포켓몬의 index 번호를, 반대로 index 번호를 입력으로 받으면 list에서 포켓몬 이름을 출력을 요구했다.
나는 map<string, int>로 변수를 선언하고, vector
즉, input : 포켓몬 이름 -> output : index 번호 map
사용
input : index 번호 -> output : 포켓몬 이름 vector
사용
결과는 성공
✔️ 정답 코드
#include <iostream>
#include <map>
#include <vector>
#include <cctype>
#include <cstdlib>
#include <string>
using namespace std;
vector<string> answer(map<string, int> dict, int M, vector<string> dict_arr);
bool isDigit(string temp);
int main(void) {
ios_base::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int N, M; // N : 포켓몬 개수, M : 문제의 개수
string temp;
map<string, int> dict;
vector<string> dict_arr;
cin >> N >> M;
for (int i = 0; i < N; i++) {
cin >> temp;
dict.insert(pair<string, int>(temp, i)); // 찾기 쉽게 string을 key로 index를 반환하게끔 만들어줌
dict_arr.push_back(temp); // 배열 하나를 추가
}
vector<string> result = answer(dict, M, dict_arr);
for (int i = 0; i < result.size(); i++) {
cout << result[i] << "\n";
}
return 0;
}
vector<string> answer(map<string, int> dict, int M, vector<string> dict_arr) {
string temp;
vector<string> result;
for (int i = 0; i < M; i++) {
cin >> temp;
if (isDigit(temp)) { // 숫자면
result.push_back(dict_arr[stoi(temp)-1]);
}
else { // 문자면
result.push_back(to_string((dict.find(temp)->second)+1));
}
}
//for (int i = 0; i < result.size(); i++)
// cout << result[i] << "\n";
return result;
}
bool isDigit(string temp) {
for (int i = 0; i < temp.length(); i++) {
if (!isdigit(temp[i]))
return false;
}
return true;
}
😑 어려웠던 부분
너무 오랜만에 문제를 풀어 감을 잃었던 것 같다..
cout << result[i]
위와 같이 print를 해야하는데, result만 써버려서 1시간을 날렸다.
친한 형이 코드 리뷰를 하다가 발견했는데 덕분에 index부분을 넣을 수 있었다….
교훈 : 꼼꼼히 잘 보자..
Leave a comment