첫 번째 시도
n = int(input())
list = [int(i) for i in input().split()]
m = int(input())
for i in input().split():
print(list.count(int(i)), end=" ")
역시나 그대로 코드를 짰더니 시간초과
error…
list
내의 모든 요소를 매번 읽어내다보니 시간이 오래 걸림.
list
대신 dictionary
사용해보자.
두 번째 시도
_ = int(input())
dict = {}
for i in list(map(int,input().split())):
if i in dict:
dict[i] += 1
else:
dict[i] = 1
_ = int(input())
for i in input().split():
if int(i) in dict:
print(dict[int(i)], end=" ")
else:
print(0, end=" ")
고수의 풀이
from collections import*
_,a,_,b=open(0)
c=Counter(a.split())
for v in b.split():print(c[v])
CODE REVIEW
list
을 매번 읽는 것은 느리다.list
를 사용하려면 탐색 방법을 개선해야하고dictionary
와 같은 다른 방법을 살펴보아야 한다.
- 고수의 풀이에서는
collections
라이브러리 안의Counter()
함수를 사용하였다.- 리스트를 먹이면 알아서 갯수 딕셔너리를 뱉어주는 아주 유용한 함수다.
- python builtin 함수가 뭐뭐 있는지 아는 것도 실력인듯…?!