◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이

[백준 / BOJ] 1620번 나는야 포켓몬 마스터 이다솜 (C++, Python)

reo91004 2022. 6. 1. 19:40
반응형

링크 : https://www.acmicpc.net/problem/1620

 

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

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

www.acmicpc.net


문제


문제 풀이

문제가 굉장히 길다.

 

C++ 상세 풀이

더보기

map을 활용해 입력받은 순서대로 해당 인덱스와 문자를 넣은 후, 숫자를 받았을 때 문자열을 출력해주기 위해 따로 vector을 선언해 주었다.

후에 입력받았을 때 가장 앞자리가 숫자면 vector의 인덱스 문자열을 출력해주고, 문자를 입력받았다면 숫자를 출력해주면 된다.

 

for (int i = 0; i < N; ++i) {
    std::string str;
    std::cin >> str;
    mp.insert(make_pair(str, i + 1));
    v[i + 1] = str;
}

for (int i = 0; i < M; ++i) {
    std::string str;
    std::cin >> str;

    if (isdigit(str[0])) {
        int key = stoi(str);
        std::cout << v[key] << "\n";
    }

    else
        std::cout << mp.find(str)->second << "\n";
}

Python 상세 풀이

더보기

dict 자료형을 활용하면 된다. 아주 쉽게 풀린다.

 

for i in range(1, N + 1):
    word = input().strip()
    dict[i] = word
    dict[word] = i

for i in range(M):
    word = input().strip()
    if word.isdigit():
        print(dict[int(word)])
    else:
        print(dict[word])

 

C++ 코드 전문

 

Python 코드 전문

 

소감

 

반응형