728x90
- 시간 초과난 코드
# 백준 집합과 맵 : 1620번 - 나는야 포켓몬 마스터 이다솜
n, m = map(int, input().split()) # n개의 포켓몬 개수, m개의 맞춰야하는 문제 개수
# n개의 포켓몬 딕셔너리에 {번호, 포켓몬 이름}, {포켓몬 이름, 번호}입력받기
s = {}
for i in range(1, n + 1):
pokemon = input()
s[i] = pokemon
s[pokemon] = i
for i in range(m):
quiz = input()
if quiz.isdigit() : # 문제가 번호면 해당 포켓몬 이름 출력
print(s[int(quiz)])
else : # 문제가 알파벳이면 해당하는 번호 출력
print(s[quiz])
사실 다른분의 코드를 참고해서 풀었다.
딕셔너리에 {번호, 포켓몬 이름}, {포켓몬 이름, 번호} 이런식으로 넣을 생각을 못하고
한번만 {번호, 포켓몬 이름} 넣은 후 값으로 키를 찾으려고 복잡하게 생각하고 있었다.
- 통과한 코드
# 백준 집합과 맵 : 1620번 - 나는야 포켓몬 마스터 이다솜
import sys
input = sys.stdin.readline
n, m = map(int, input().split()) # n개의 포켓몬 개수, m개의 맞춰야하는 문제 개수
# n개의 포켓몬 딕셔너리에 {번호, 포켓몬 이름}, {포켓몬 이름, 번호}입력받기
s = {}
for i in range(1, n + 1):
pokemon = input().rstrip()
s[i] = pokemon
s[pokemon] = i
for i in range(m):
quiz = input().rstrip()
if quiz.isdigit() : # 문제가 번호면 해당 포켓몬 이름 출력
print(s[int(quiz)])
else : # 문제가 알파벳이면 해당하는 번호 출력
print(s[quiz])
input()으로만 풀었을 때는 시간초과가 났다.
구글링해보니까 sys.stdin.readline으로 변경하면 시간초과를 해결할 수 있다고 한다.
대신 엔터가 사용되므로 rstrip()을 꼭 붙혀줘야한다.
입력 속도 비교
여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일
www.acmicpc.net
Python 백준 문제풀이 시 입출력 정리
input() : 한 줄의 문자열을 입력 map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용 # 공백을 기준으로 구분된 데이터를 입력 받을 떄 data = list(map(int, input().split())) # 공백을 기준으로
paris-in-the-rain.tistory.com
'Algorithm > Baekjoon' 카테고리의 다른 글
#백준 1764, 파이썬 / set 집합 자료형 교집합, 합집합, 차집합 (0) | 2022.10.20 |
---|---|
#백준 10816, 파이썬 / 딕셔너리 이용 (0) | 2022.10.12 |
#백준 14425, 파이썬 (0) | 2022.10.06 |
#백준 11659, 파이썬, PyPy3와 Python3 차이점 (0) | 2022.09.27 |
#백준 2559, 파이썬, 리스트 슬라이싱 : (0) | 2022.09.26 |