문제
접근
n과 m이 제법 큰 수이다.
그냥 배열을 두고 하나씩 탐색한다면, 총 O(nm)이 걸린다.
아마 통과하기 힘들어보인다.
이 문제는 해시를 사용해야 한다.
파이썬은 훌륭한 딕셔너리가 있으니 사용해주자.
key에는 숫자가 들어오고, value에 해당 숫자가 몇 번 나왔는지 카운트해준다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n = int(input())
dic = {}
arr = list(map(int, input().split()))
for item in arr:
if item not in dic:
dic[item] = 0
dic[item]+=1
m = int(input())
ans = []
query = list(map(int, input().split()))
for q in query:
if q not in dic:
print(0, end=' ')
else:
print(dic[q], end=' ')