728x90
반응형
import sys
n = int(sys.stdin.readline())
key_arr = sys.stdin.readline().strip().split()
m = int(sys.stdin.readline())
arr = sys.stdin.readline().strip().split()
key_arr.sort() #기준 배열 정렬
def binary(a,k_arr,start,end):
if start > end:
return 0
m = (start + end) // 2
if a == k_arr[m]:
cnt = 1
for i in range(1,m+1):
try:
if k_arr[m - i] == k_arr[m]:
cnt = cnt + 1
else: break
except IndexError: pass
for i in range(1,m+1):
try:
if k_arr[m + i] == k_arr[m]:
cnt = cnt + 1
else: break
except IndexError: pass
return cnt
elif a < k_arr[m]:
return binary(a,k_arr,start,m-1)
else:
return binary(a,k_arr,m+1,end)
ans = [0]*m
i = 0
for t in arr:
s = 0
e = len(key_arr)-1
ans[i] = (binary(t,key_arr,s,e))
i = i+1
print(*ans)
이진 탐색으로 실패한 코드..
n = int(input())
arr1 = list(map(int, input().split()))
dict1 = dict() # 숫자카드와 개수를 딕셔너리에 담기
for i in arr1:
if i in dict1:
dict1[i] += 1
else:
dict1[i] = 1
m = int(input())
arr2 = list(map(int, input().split()))
for i in arr2:
if i in dict1:
print(dict1[i], end=' ')
else:
print(0, end=' ')
딕셔너리를 이용해서 각 숫자의 개수를 미리 value 값으로 갖고 있고 입력받은 숫자가 key값에 존재할 경우 value 값을 출력해주고 그렇지 않은 경우 0을 출력한다. 찝찝하다...
728x90
반응형
'Algorithm & Data Structure' 카테고리의 다른 글
백준 - 1260번(DFS,BFS) (0) | 2022.02.22 |
---|---|
Heap 자료구조 (0) | 2022.02.19 |
백준 - 1920번(이진탐색) (0) | 2022.02.06 |
백준 - 11401번(재귀,이항계수, 페르마 소정리) (0) | 2022.02.05 |
백준 - 10830(재귀, 분할정복) (0) | 2022.02.04 |