https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
[2022.02.17]
- 이분탐색으로 해결하면 정답 나옴.
N = int(input())
numbers = list(map(int, input().split()))
M = int(input())
task = list(map(int, input().split()))
new_dict = {}
for n in numbers:
if n not in new_dict:
new_dict[n] = 1
else:
new_dict[n] += 1
numbers.sort()
def binary(m):
l = 0
r = len(numbers) - 1
while 1:
m = (l + r) // 2
if numbers[m] == t:
return new_dict[t]
elif numbers[m] > t:
r = m - 1
else:
l = m + 1
if l > r:
return 0
cnt = []
for t in task:
cnt.append(binary(t))
print(*cnt)
'코딩테스트 > 백준' 카테고리의 다른 글
[Python] BOJ 1541 - 잃어버린 괄호 (0) | 2022.04.13 |
---|---|
[Python] BOJ 1206 - 보물 (0) | 2022.04.13 |
[Python] BOJ 1654 - 나무자르기 (0) | 2022.04.13 |
[C++/덱] BOJ 5430 AC (0) | 2021.06.22 |
[C++/큐] BOJ 2164 카드2 (0) | 2021.06.15 |
댓글