1. 사전 자료형 + 이진 탐색을 활용하여 푼 방법 (2508ms)
import sys
input = sys.stdin.readline
n = int(input())
array_n = sorted(list(map(int,input().split())))
m = int(input())
array_m =list(map(int,input().split()))
dictionary = {}
for i in array_n:
if i not in dictionary:
dictionary[i] = 1
else:
dictionary[i] += 1
def binary_search(array,target,start,end):
while start <= end:
mid = (start + end)//2
if array[mid] == target:
return dictionary.get(target)
elif array[mid] < target:
start = mid + 1
else:
end = mid - 1
return 0
for i in array_m:
print(binary_search(array_n,i,0,n-1),end=" ")
2. 사전 자료형 + 집합 자료형을 활용하여 푼 방법 (1080ms)
import sys
input = sys.stdin.readline
n = int(input())
array_n = sorted(list(map(int,input().split())))
m = int(input())
array_m =list(map(int,input().split()))
dictionary = dict()
for i in array_n:
if i not in dictionary:
dictionary[i] = 1
else:
dictionary[i] += 1
# in 연산자의 시간복잡도를 줄이기 위해 집합(Set)자료형 사용
set_n = set(array_n)
for i in array_m:
if i in set_n:
print(dictionary[i],end=" ")
else:
print(0,end=" ")
'Algorithm 💡 > BinarySearch' 카테고리의 다른 글
[BinarySearch] 이진 탐색 알고리즘 개념 및 코드 정리 (0) | 2023.02.23 |
---|---|
[백준 10815번] 숫자 카드 (0) | 2023.02.23 |
[백준 1920번] 수 찾기(이진 탐색) (0) | 2023.02.22 |