728x90
문제
풀이
import sys
from collections import Counter
M=int(sys.stdin.readline())
list1=list(map(int,sys.stdin.readline().split()))
N=int(sys.stdin.readline())
list2=list(map(int,sys.stdin.readline().split()))
c= Counter(list1)
for i in list2:
if i in c:
print(c[i], end=' ')
else:
print(0, end=' ')
위 문제는 list의 count함수를 사용하면 문제가 풀리긴 하지만 시간초과가 발생한다.
collections 패키지의 Counter 함수를 사용하면 시간초과 없이 문제를 해결할 수 있다.
클래스 2 문제를 풀면서 시간초과를 줄이기 위한 팁을 알게 되었다.
input() 대신 sy.stdin.readline() 사용하기
count() 대신 Counter() 사용하기 -> Counter은 빈도수를 딕셔너리 형태로 만듬
'PS' 카테고리의 다른 글
[백준] 11399번 : ATM(탐욕 알고리즘)- 파이썬[Python] (0) | 2022.01.16 |
---|---|
[백준] 10989번 : 수 정렬하기 3- 파이썬[Python] (0) | 2022.01.13 |
[백준] 10814번 : 나이순 정렬(sort 함수 key)- 파이썬[Python] (0) | 2022.01.11 |
[백준] 2108번 : 통계학(counter)- 파이썬[Python] (0) | 2022.01.10 |
[백준] 5430번 : AC(덱)- 파이썬[Python] (0) | 2022.01.10 |
댓글