https://www.acmicpc.net/problem/10816
단순 존재 위치만을 파악하는 경우라면 set을 사용해도 되었지만 set을 사용하면 정렬이 되기 때문에 같은 인덱스의 갯수를 파악할 수가 없었고 그로 인해 list를 사용하게 되면 시간초과가 나는 문제점이 있었다.
📚 Counter 란?
- 빠르게 객체의 갯수를 셀 수 있도록 해주는 Collection 내장함수이다.
Tally occurrences of words in a list cnt = Counter() for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: cnt[word] += 1 cnt Counter({'blue': 3, 'red': 2, 'green': 1})
따라서 counter 을 사용해 cardA에서의 갯수를 받은 후 해당 cardB에 값을 대입한다.
https://docs.python.org/ko/3.13/library/collections.html#counter-objects
최종코드
import sys
from collections import Counter
m = int(sys.stdin.readline())
cardA = list(map(int, sys.stdin.readline().split()))
n = int(sys.stdin.readline())
cardB = list(map(int, sys.stdin.readline().split()))
counter = Counter(cardA)
for i in range(n):
cardB[i] = counter[cardB[i]]
print(*cardB)
초기코드(시간초과)
import sys
m = int(sys.stdin.readline())
cardA = list(map(int, sys.stdin.readline().split()))
n = int(sys.stdin.readline())
cardB = list(map(int, sys.stdin.readline().split()))
answer = [0] * n
for i in range(len(cardB)):
count = cardA.count(cardB[i])
answer[i] += count
print(*answer)```