몇일 전에 풀었던 숫자카드 2와 같은 코드를 사용했다
마찬가지로 해시맵을 사용하면 시간초과가 안뜨는데 이분탐색을 사용하니 시간초과가 떴다.
# 해시 맵을 사용하여 푼 코드, 이진탐색에 비해 더 간단한 느낌이 든다...
n = int(input())
n_arr = list(map(int, input().split()))
m = int(input())
m_arr = list(map(int, input().split()))
result = []
dict = {}
for i in n_arr:
if i in dict:
dict[i] +=1
else:
dict[i] = 1
for i in m_arr:
if i in dict:
print(dict[i],end=' ')
else:
# 이진탐색을 이용하여 푼 코드, 시간초과가 뜨지만 답은 잘 나온다. 파이썬만의 문제인가???
n = int(input())
n_arr = list(map(int, input().split()))
m = int(input())
m_arr = list(map(int, input().split()))
n_set = list(set(n_arr))
# 이분탐색 함수
def bin_search(target, arr):
arr.sort()
start = 0
end = len(arr)-1
while start <= end:
mid = (start+end)//2
if arr[mid] == target:
return mid
elif arr[mid]>target:
end = mid-1
else:
start = mid+1
return None
for i in m_arr:
res = bin_search(i, n_set)
if res != None:
print(n_arr.count(i),end=' ')
else:
print(0,end=' ')
'백준' 카테고리의 다른 글
A와 B - 12904번 (0) | 2022.09.19 |
---|---|
스택 - 10828번 (0) | 2022.09.18 |
숫자 카드 2 - 10816번 (0) | 2022.09.16 |
수 찾기 - 1920번 (0) | 2022.09.15 |
A → B - 16953번 (0) | 2022.09.14 |
댓글