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)로 빠르다. 또한 해당 숫자의 갯수 까지 바로 출력시켜주기 때문에 해당 유형의 문제를 풀 때 유용하게 사용할 수 있다. ㅁ