호기심 많은 분석가

[백준 10816] 숫자 카드 2 (Python) 본문

Coding/Coding Test & Algorithm

[백준 10816] 숫자 카드 2 (Python)

DA Hun 2021. 6. 3. 22:39
 

10816번: 숫자 카드 2

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

www.acmicpc.net

import sys
from collections import Counter
n = sys.stdin.readline().strip()
arr1 = sys.stdin.readline().split()
m = sys.stdin.readline().strip()
arr2 = sys.stdin.readline().split()

ct = Counter(arr1)

print(' '.join(f'{ct[i]}' for i in arr2))

 간단히 해결할 수 있는 문제였는데 바보같은 짓을 해서 계속 시간초과가 뜨고 있었다.

for ans in arr2 :
    print(Counter(arr1)[ans], end=' ')

계속 for문 안에서 Counter를 취해줬더니 당연히 시간초과가 뜰 수 밖에.. 덕분에 다른 분들 코드 보다가 list comprehension과 f-string을 이용하여 간단히 출력한 것을 참고했다. 꽤 나쁘지 않을지도?