[Python] 1620번 나는야 포켓몬 마스터 이다솜

이세령·2023년 5월 28일
0

알고리즘

목록 보기
17/43

문제

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

풀이과정

  • 문제가 심심해서 만든 것 같아서 필요한 정보만 요약해보았다.
  • 입력 포켓몬 개수: n , 문제 개수: m
  • 출력 입력 받은 것이 숫자이면 해당 숫자에 맞는 포켓몬 이름을 출력 문자라면 포켓몬이 해당하는 숫자를 출력
  • 도감이니 python에서는 딕셔너리를 사용하여 key가 들어오면 value를 value가 들어오면 key를 출력하도록 코드를 짜보았다.
  • 먼저, 딕셔너리에 잘 추가가 되는지 확인해보았다.
    n, m = map(int, input().split())
    d = {}
    
    for i in range(n):
        d[i+1] = input()
    print(d)

  • 딕셔너리는 value에서 key를 찾는 것은 힘들기 때문에 포켓몬을 key인 값들을 추가해주었다.
  • 문자열이 숫자로 이루어져 있는지 확인하는 메서드 isdigit을 사용하여 문제에 대한 답을 찾도록 하였다.
n, m = map(int, input().split())
d = {}

for i in range(n):
    a = input()
    d[i+1] = a  # 숫자를 key로
    d[a] = i+1  # 포켓몬 이름을 key로
# print(d)

for _ in range(m):  # 문제
    problem = input()
    if problem.isdigit():
        print(d[int(problem)])
    else:
        print(d[problem])

→ 시간초과 발생

  • sys를 사용해주었다.
  • 하지만 런타임 에러가 발생했다. (keyerror) 값을 넣을 때 개행 문자가 들어가서 key를 찾지 못하는 것 같다.

정답

import sys

n, m = map(int, sys.stdin.readline().split())
d = {}

for i in range(n):
    a = sys.stdin.readline().rstrip()
    d[i+1] = a  # 숫자를 key로
    d[a] = i+1  # 포켓몬 이름을 key로
# print(d)

for _ in range(m):  # 문제
    problem = sys.stdin.readline().rstrip()
    if problem.isdigit():
        print(d[int(problem)])
    else:
        print(d[problem])

⇒ 성공!
메모리: 58908KB
시간: 264ms

profile
https://github.com/Hediar?tab=repositories

0개의 댓글