알고리즘 :: 큰돌 :: Chapter1 - 기초 :: 백준 1620 나는야 포켓몬 마스터 이다솜

Embedded June·2023년 6월 30일
0
post-thumbnail

문제

문제링크

해설

  • 문자열을 입력받았을 때 정수를 반환하기 위해 key-value 구조로 데이터를 저장하는 map STL 컨테이너를 떠올리면 성공입니다.
  • 하지만, 정수(value)를 입력받았을 때 문자열(key)을 반환하는 방법이 없습니다.
  • 따라서, 공간복잡도 O(n)을 더 소모하지만 key-value를 반대로 저장하는 또다른 map 컨테이너를 생성합니다.
  • key가 문자열인 map을 map_A, key가 정수인 map을 map_b라고 하면,
    • 질문이 문자열일 때 map_A[질문]을 반환합니다.
    • 질문이 정수일 때 map_B[질문]을 반환합니다.
  • 이때, 저장되는 순서는 중요하지 않기 때문에 unordered_map(해시)를 사용하는 것이 성능면에서 조금 더 좋습니다.

코드

#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;

int main() {
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

    int n, k;
    cin >> n >> k;

    unordered_map<string, int> dict_str_to_int;
    unordered_map<int, string> dict_int_to_str;

    for (int i = 1; i <= n; i++) {
        string name;
        cin >> name;
        dict_str_to_int.emplace(name, i);
        dict_int_to_str.emplace(i, name);
    }
    while (k--) {
        string question;
        cin >> question;
        if ('0' <= question[0] && question[0] <= '9')
            cout << dict_int_to_str[stoi(question)] << '\n';
        else
            cout << dict_str_to_int[question] << '\n';
    }
    return 0;
}

소스코드 링크

결과

profile
임베디드 시스템 공학자를 지망하는 컴퓨터공학+전자공학 복수전공 학부생입니다. 타인의 피드백을 수용하고 숙고하고 대응하며 자극과 반응 사이의 간격을 늘리며 스스로 반응을 컨트롤 할 수 있는 주도적인 사람이 되는 것이 저의 20대의 목표입니다.

0개의 댓글