https://www.acmicpc.net/problem/10816
1) 입력값: 카드 수 N, N개 카드 값, 카드 수 M, M개 카드 값
2) 출력값: M개 카드 값마다 N에서 발생하는 수
3) 제약조건:
- 1 <= N, M <= 500,000
- -10,000,000 <= N개 카드 값, M개 카드 값 <= 10,000,000
4) 예외케이스: 없음
def count_cards_2():
n = int(input())
cards = list(map(int, input().split()))
m = int(input())
cards_to_count = list(map(int, input().split()))
table = {}
for i in cards:
if i in table:
table[i] += 1
else:
table[i] = 1
for i in cards_to_count:
if i in table:
print(table[i], end = ' ')
else:
print(0, end = ' ')
count_cards_2()
Hashtable
을 만들어서 사용해서 비교적 수월하게 풀 수 있었다.
Binary Search
를 통해 해당 값이 있는지 풀 수도 있을 것 같다.