문제
https://www.acmicpc.net/problem/10816
코드
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)로 빠르다. 또한 해당 숫자의 갯수 까지 바로 출력시켜주기 때문에 해당 유형의 문제를 풀 때 유용하게 사용할 수 있다. ㅁ
'Koala - 9기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
백준[23327] 리그전 오브 레전드 (Python3) (0) | 2023.01.30 |
---|---|
[백준/Java] 2805 나무 자르기 (0) | 2023.01.29 |
[백준/C++] 2110번 공유기 설치 (0) | 2023.01.28 |
[백준/Python] 11663 선분위의 점 (0) | 2023.01.26 |
[백준 / Python] 15038번 Lounge Lizards (0) | 2023.01.25 |