-
[1620] 나는야 포켓몬 마스터 이다솜CS/백준, 프로그래머스 풀이 2022. 6. 9. 23:35
n, m = map(int, input().split()) #포캣몬 개수 , 내가 맞춰야 할 문제의 개수 items = [] for i in range(n): items.append((i + 1, input())) for _ in range(m): res = input() if res.isdigit(): #여기서 서칭을 어떻게 해주느냐인데 for i in items: if i[0] == int(res): print(i[1]) break else: for i in items: if i[1] == res: print(i[0]) break
시간초과가 떴다.
당연한거다, for문이 두번이나 돌아가니말이다.
만약 파이썬으로 푼다면 그냥 dict로 해결가능한 문제였다.
n, m = map(int, input().split()) #포캣몬 개수 , 내가 맞춰야 할 문제의 개수 items = {} for i in range(1, n + 1): a = input().rstrip() items[i] = a items[a] = i for i in range(m): exam = input().rstrip() if exam.isdigit(): print(items[int(exam)]) else: print(items[exam])
dict 같은건 자유자재로 쓰자...싶었으나
시간초과가 떴다.
문제는 input의 방식이었다.
import sys input = sys.stdin.readline
이걸 추가해줬더니 채점을 잘만 하더라
직접 input에 꽂는방식과 readline으로 받는 방식의 속도차이가 어마어마한건가?
https://www.acmicpc.net/blog/view/56
https://buyandpray.tistory.com/7
이런 자료가 있다.
내게 필요한 정보라면,
1) readline에는 개행문자가 포함된다는 것이 input과 차이가 있다는 점.
고로 readline을 쓰려거든 rstrip을 통해 개행을 없애주는걸 권고
2) PyPy3가 Python3보다 IO쪽에서는 빠른 것 같다
자세한건 더 조사해볼 예정이다.
'CS > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[16236] 아기상어 (1) _ 문제 설명 & 일부 코드 설명 (0) 2022.06.13 [11866] 요세푸스 문제 0 (0) 2022.06.12 [10814] 나이순 정렬 (0) 2022.05.27 [2609] 최대공약수 최소공배수 (0) 2022.05.27 [1181] 단어정렬 (0) 2022.05.27