PS/Python

[백준] 10816 숫자 카드 2 (파이썬, Python)

w00se 2021. 3. 31. 00:33

 

www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net


N개의 숫자 카드 목록이 주어지고 M가의 찾을 카드가 주어지면

각각의 찾을 카드 별로 숫자 카드 목록에서 몇 개가 있는지 출력하는 문제입니다!

 

이 문제를 처음 봤을 때 정렬을 해서 풀어야하나 고민이 들었는데요

숫자 카드의 개수(카드 목록의 길이)의 최대 값이 500000이라 단순히 정렬을 탐색하면 시간 초과가 날 거 같았습니다!

 

그래서 단순히 동일한 카드의 개수를 찾는 문제이니 해시를 이용해 시도를 해보았고

결과는 성공이였습니다😁

 

 

전체 코드

from collections import Counter
import sys

N = int(sys.stdin.readline().strip())

cardList = Counter(list(map(int, sys.stdin.readline().strip().split())))

M = int(sys.stdin.readline().strip())

numList = list(map(int, sys.stdin.readline().strip().split()))

print(" ".join([ str(cardList[item]) for item in numList]))

 


문제를 풀고 해당 문제의 분류를 알고 싶어서 검색을 한 결과

해당 문제의 분류는 '이분 탐색'인 거 같습니다!

이분 탐색 복습할 겸 다시 풀어볼 예정입니다ㅎㅎ