728x90
반응형
https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
code
#숫자 카드2
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int,input().split()))
dic1 = dict()
for i in a:
if i in dic1:
dic1[i] += 1
else:
dic1[i] = 1
m = int(input())
b = list(map(int,input().split()))
for i in b:
if i in dic1:
print(dic1[i],end=' ')
else:
print(0, end=' ')
시간초과 code
import sys
input = sys.stdin.readline
n = int(input())
a = list(map(int,input().split()))
m = int(input())
b = list(map(int,input().split()))
for i in b:
count = 0
for j in a:
if i == j:
count += 1
print(count,end=' ')
처음 작성한 코드는 이중 for문을 통해 하나하나 탐색해나갔는데 이 과정에서 시간초과가 떴다.
그래서 새로 작성한 코드는 상근이가 가지고 있는 코드 a를 입력받고
바로 총 갯수를 파악한 후에 딕셔너리로 key와 벨류에 해당 숫자와 총 갯수를 넣어주었다.
그 후 입력받은 숫자카드에 대해 딕셔너리에 이미 저장해둔 값을 찾아 출력하는 방식으로 시간초과를 해결하였다.
리스트탐색에서는 시간복잡도 O(n)이 소요되지만
딕셔너리에서는 O(1)의 시간이 걸리므로 딕셔너리에 미리 카운트를 해두고 탐색함으로써
시간을 줄였다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 10866번 : 덱 (deque) (0) | 2022.03.27 |
---|---|
[baekjoon] 10828번 : 스택 (by python 파이썬) (0) | 2022.03.24 |
[baekjoon] 9012번 : 괄호 by python (0) | 2022.03.16 |
[baekjoon] 2609번 : 최대 공약수 최소 공약수 (0) | 2022.03.14 |
[baekjoon] 11050번 : 이항 계수 by python (0) | 2022.03.14 |