알고리즘/백준(BOJ)

[백준/알고리즘]#10816: 숫자 카드 2 [해쉬]

https://www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

해쉬를 이용하거나 이분 탐색을 통해 풀 수 있는 문제다.

나는 해쉬를 사용하여 풀었다.

 

파이썬 코드

#10816

import sys
input = sys.stdin.readline

N = input()
real_card = list(map(int, input().split()))
real_card.sort()

M = input()
pred_card = list(map(int, input().split()))

match = {}
for i in real_card:
    if i in match:
        match[i] += 1
    else:
        match[i] = 1

for j in pred_card:
    if j in match:
        print(match[j], end=' ')
    else:
        print(0, end=' ')

match 딕셔너리에 real_card의 숫자와 개수를 넣고

pred_card에 있는 카드의 경우 출력하고, 없으면 0을 출력한다.