티스토리 뷰

Algorithm/BOJ

백준 1620번 C++

poopooreum 2023. 7. 24. 18:51
반응형

백준 1620번 나는야 포켓몬 마스터 이다솜
https://www.acmicpc.net/problem/1620

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net



정답 코드

#include<iostream>
#include<unordered_map>
#include<vector>
using namespace std;
unordered_map<string, int>arr;
vector<string>input;
int main(){
    ios_base::sync_with_stdio(false);     
    cin.tie(NULL);
    cout.tie(NULL);
    int n,m;
    cin>>n>>m;
    for(int x=0;x<n;x++){
        string str;
        cin>>str;
        input.push_back(str);          
        arr.insert({str,x+1});        
    }
    for(int x=0;x<m;x++){
        string st;
        cin>>st;
        if (st[0] >= '0' && st[0] <= '9') {
            int index=stoi(st);
            cout<<input[index-1]<<'\n';                                                            ;
            }
        else
            cout<<arr.find(st)->second<<'\n';            
    }   
}


문제 풀이
음.. 상당히 서론이 긴 문제네요 ㅎㅋㅎㅋㅎㅋ
vectorunordered_map을 이용해서 풀었습니다.
key와 value를 이용해서 푸는 문제인데 정렬하는 것이
아닌 들어온 순서대로 번호가 기록되어야 하기 때문에
unordered_map이 적절하다고 생각했습니다.
문장을  
vector에 추가하고 unordered_map에는
문장과 입력받은 숫자를 쌍으로 추가하였습니다.
그 후 map에서 각 문장에 해당되는
value(입력 받은 순서)를 얻어와서 출력할 수 있게 하였습니다.
숫자문장을 입력받은 경우
stoi를 이용해서 숫자로 바꿔주고  vector에 알맞는 인덱스값을 출력할 수 있도록
하였습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

[C/C++] 백준 1644번 - 소수의 연속합  (0) 2023.07.25
백준 1629번 C++  (0) 2023.07.24
백준 1600번 C++  (0) 2023.07.24
백준 1550번 C++  (0) 2023.07.24
백준 1546번 C++  (0) 2023.07.24
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함