본문 바로가기
알고리즘/백준

백준 10816번 숫자 카드 2번 시간초과 Counter 내장함수 이용

by 푸딩코딩 2022. 8. 20.
728x90
반응형
from collections import Counter
N=int(input())
list1=list(map(int,input().split(' ')))
list1.sort()

M=int(input())
list2=list(map(int,input().split(' ')))

count=Counter(list1)

for i in range(len(list2)):
    if(list2[i] in count):
        print(count[list2[i]],end=' ')
    else:
        print(0,end=' ')

 

10815랑 비슷한 문제 

처음에 무지성 for문 했다가 오류날 것 같아서 

list.count(3) 함수를 통해 리스트 안의 요소를 세어 출력했다. 

그런데 시간 초과가 났다. 

 

모두 탐색해서 그런걸까? 

이진탐색을 사용해 N에 정수가 들어있을 때만 count하기로 했다. 

그런데 또 시간 초과 오류가 났다. 

 

그렇게 찾아보던 도중.. 

파이썬 collections 모듈의 내장 함수 Counter을 이용하면 풀린다는 것을 보았다 

 

Counter는 리스트의 원소를 원소:개수 꼴로 딕셔너리 형태로 저장한다 

그렇게해서 출력을 하니 시간초과 없이 통과할 수 있었다 

728x90
반응형