Koala - 9기/코딩테스트 준비 스터디
[백준/python] 10816번 숫자 카드 2
Juno7
2023. 1. 29. 19:24
문제
https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
코드
from collections import Counter
input = __import__('sys').stdin.readline
input()
s = list(map(int, input().split()))
s = Counter(s)
input()
c = list(map(int, input().split()))
ans = []
for i in c:
if i in s:
ans.append(s[i])
else:
ans.append(0)
print(*ans)
풀이
숫자 카드 리스트와 찾아야하는 숫자의 리스트가 주어지고 찾아야하는 숫자가 숫자 카드 리스트에 몇 개나 있는지를 출력하는 문제이다. collections 모듈의 Counter 함수를 쓰면 쉽게 풀 수 있다. Counter 함수는 해당 리스트의 원소의 개수를 딕셔너리 형태로 출력시켜 주기 때문에 n번 탐색 시 시간복잡도가 O(n)로 빠르다. 또한 해당 숫자의 갯수 까지 바로 출력시켜주기 때문에 해당 유형의 문제를 풀 때 유용하게 사용할 수 있다. ㅁ