728x90

2022.02.22

백준 10816 숫자 카드 2

# 10816
import sys
N = int(input())
arr = list(map(int, sys.stdin.readline().split()))
M = int(input())
fin = list(map(int, sys.stdin.readline().split()))

num = {}
for i in arr:
    num[i] = 0

for i in arr:
    num[i] += 1

for i in fin:
    try:
        print(num[i], end = ' ')
    except:
        print(0, end = ' ')

count 함수를 사용하면 되지 않을까? 생각했는데 입력 숫자가 커서 그런가 역시나 시간 초과가 나왔다.

그래서 이분탐색 알고리즘을 써야 하나 했는데 라이브러리를 사용하지 않고는 어떻게 풀이할지 생각이 나질 않아서

그냥 딕셔너리로 풀었다.

 

N개의 주어진 숫자들을 키값으로 하여 같은 값이 나오면 +1씩 해줬다.

그래서 M개의 주어진 숫자들의 키값에 저장된 값을 출력하는데 try, except 구문을 사용하여

키값이 없을 경우 0을 출력하게 했다.

728x90

'Algorithm' 카테고리의 다른 글

백준 13458 파이썬  (0) 2022.02.25
백준 1654 파이썬  (0) 2022.02.23
백준 10773 파이썬  (0) 2022.02.15
백준 9012 파이썬  (0) 2022.02.15
백준 1904 파이썬  (0) 2022.02.15

+ Recent posts