[Python] 백준 10816

eun·2024년 1월 12일

문제 10816

위 문제를 다시 정리해보자.
첫째줄에는 상근이가 가지고 있는 숫자 카드의 개수 n개가 주어진다. 다음 줄에는 상근이가 가지고 있는 카드들이 주어진다.
이후에는 비교할 숫자 카드의 개수가 주어지고, 다음 줄에는 비교할 숫자 카드들이 주어진다.

주어진 숫자 카드에 대해서 상근이가 몇 개 가지고 있는지를 출력하는 문제이다.

# 10816

import sys

n = int(input())

num = list(map(int, sys.stdin.readline().split()))
num.sort()

m = int(input())
test = list(map(int, sys.stdin.readline().split()))

for i in test:
    cnt = 0
    for j in num:
        if i == j:
            cnt += 1
    
    print(cnt, end = ' ')
    

처음에는 이와 같이 단순 반복문으로 풀려고 시도했다. 하지만 역시나 시간초과가 나왔다.

# 10816

import sys

n = int(input())

num = list(map(int, sys.stdin.readline().split()))
num.sort()

m = int(input())
test = list(map(int, sys.stdin.readline().split()))


cnt = {}
for i in num:
    if i in cnt:
        cnt[i] += 1
    else:
        cnt[i] = 1

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

이후 딕셔너리를 활용하여 풀었더니 정답이 나왔다.

0개의 댓글