본문 바로가기

코딩

[Python] 백준 #10815. 숫자 카드

https://www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

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

www.acmicpc.net

 

# 10815. - Python 3

import sys

input = sys.stdin.readline

n = int(input())

arr1 = []
arr1 = list(map(int, input().split()))

m = int(input())

arr2 = []
arr2 = list(map(int, input().split()))

dic = {}

for i in range(len(arr2)):
    dic[arr2[i]] = 0            # arr2의 key값들을 dic에 저장

for i in arr1:
    if i in dic.keys():         # arr1의 값이 dic의 key에 있다면 - 상수 시간이 소모되어 시간 복잡도를 크게 낮춤
        dic[i] += 1             # 해당하는 dic의 value값을 +1 해줌

print(*dic.values())

< line 17 ~ 22 >

- dictionary를 사용하여 시간 복잡도를 줄임

- dic.keys()를 사용한 연산은 상수 시간에 작동