알고리즘/백준
백준 10816번 숫자 카드 2번 시간초과 Counter 내장함수 이용
푸딩코딩
2022. 8. 20. 23:35
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
반응형