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()를 사용한 연산은 상수 시간에 작동
'코딩' 카테고리의 다른 글
| [Python] 백준 #1620. 나는야 포켓몬 마스터 이다솜 (0) | 2023.03.17 |
|---|---|
| [Python] 백준 #14425. 문자열 집합 (0) | 2023.03.17 |
| [Python] 백준 #24313. 알고리즘 수업 - 점근적 표기 1 (0) | 2023.03.13 |
| [Python] 백준 #24267. 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2023.03.13 |
| [Python] 백준 #24266. 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2023.03.13 |