혼자 정리

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

알고리즘 문풀/백준

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

tbonelee 2021. 7. 15. 20:30

문제링크

#include <iostream>
#include <string>
#include <map>

using namespace std;

int N, M;

string temp;

map <string, int> maps;

string arr[100001];

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N >> M;

    for (int i = 0; i < N; i++)
    {
        cin >> temp;
        maps.insert(pair<string, int>(temp, i + 1));
        arr[i + 1] = temp;
    }
    for (int i = 0; i < M; i++)
    {
        cin >> temp;
        if (isdigit(temp[0]))
        {
            cout << arr[atoi(temp.c_str())] << "\n";
        }
        else
        {
            cout << maps[temp] << "\n";
        }
    }
}
import sys
input = sys.stdin.readline

N,M = map(int, input().split())
arr = [0]
dic = dict()
for i in range(1, N+1):
    temp = input().rstrip()
    arr.append(temp)
    dic[temp] = i
for j in range(1, M+1):
    tmp = input().rstrip()
    if tmp.isalpha():
        print(dic[tmp])
    else :
        print(arr[int(tmp)])
  • cpp에서는 map을 활용.
    • string을 key, int를 value로 활용
  • 파이썬에서는 딕셔너리를 활용.
    • 그냥 input을 사용했을 때 시간초과.
    • 처음 sys.stdin.readline을 해줬을 때는 rstrip()을 해주지 않아서 int로 바꿔서 arr의 인덱스로 사용하려 할 때 오류 발생.
    • sys.stdin.readline에 rstrip로 개행 처리해줬을 때 통과. rstrip를 해줘도 input()보다 빠른듯하다.

'알고리즘 문풀 > 백준' 카테고리의 다른 글

11726번: 2×n 타일링  (0) 2021.07.19
9095번: 1, 2, 3 더하기  (0) 2021.07.18
17626번: Four Squares  (0) 2021.07.17
11723번: 집합  (0) 2021.07.16
5525번: IOIOI  (0) 2021.07.15