๋ฐฑ์ค | Baekjoon
[๋ฐฑ์ค][10816] ์ซ์ ์นด๋ 2 | ํ์ด์ฌ | ์ด์งํ์(์ด๋ถํ์)
sungkshon
2024. 8. 18. 04:21
๋ฐ์ํ
https://www.acmicpc.net/problem/10816
๐๊ตฌํด์ผ ํ๋ ์ ๋ต
n๊ฐ์ ์ซ์ ์นด๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ ์ m๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ์๊ฐ ์ ํ์๋ ์ซ์ ์นด๋๋ฅผ ๋ช ๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
๐์ฝ๋ ์ค๊ณํ๊ธฐ
1. ๋ฌธ์ ์ input์ ๋ฐ์ต๋๋ค.
2. ์ด์งํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ target๊ฐ๊ณผ ๊ฐ์ ์๋ฅผ ์นด์ดํธ ํด์ค๋๋ค.
3. count๊ฐ์ returnํด์ค๋๋ค.
๐์๋ ํ์ฐจ ์์ ์ฌํญ
1. ์ฒซ๋ฒ์งธ ์๋ : ์๊ฐ ์ด๊ณผ
์คํจ ์์ธ
if arr[mid] == target:
count += 1
2. ๋๋ฒ์งธ ์๋ : ์๊ฐ ์ด๊ณผ
if arr[mid] == target:
return arr.count(target)
์์ ๊ฐ์ด ์์ ํ ๊ฒฐ๊ณผ๋ฌผ์ด ์ ๋๋ก ์ถ๋ ฅ ๋์์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋์๋ค.
์๊ฐ ์ด๊ณผ ์ฝ๋
import sys
n = int(sys.stdin.readline())
n_list = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
m_list = list(map(int, sys.stdin.readline().split()))
n_list.sort()
def binary_search(target, arr):
start = 0
end = len(arr) - 1
while start <= end: # start๊ฐ end๋ฅผ ๋์ง ์๊ฒ
mid = (start + end) // 2
if arr[mid] == target:
return arr.count(target)
elif arr[mid] < target:
start = mid +1
else:
end = mid - 1
for i in m_list:
result = binary_search(i, n_list)
if result == None:
print(0, end = " ")
else:
print(result, end = " ")
๐์ ๋ต ์ฝ๋
import bisect
import sys
# 1. ๋ฌธ์ ์ input์ ๋ฐ์ต๋๋ค.
N = int(sys.stdin.readline())
arr_n = list(map(int, sys.stdin.readline().split()))
M = int(sys.stdin.readline())
arr_m = list(map(int, sys.stdin.readline().split()))
# 2. ๋ฐฐ์ด N์ ์ ๋ ฌํฉ๋๋ค.
arr_n.sort()
# 3. ์ด๋ถํ์์ ํ์ฉํด M์์ ๊ฐ๊ฐ์ ์์์ ๋ํด ์กด์ฌํ๋ ๊ฐ์๋ฅผ ๊ตฌํฉ๋๋ค.
for x in arr_m:
left = bisect.bisect_left(arr_n, x)
right = bisect.bisect_right(arr_n, x)
print(right-left, end=' ')
๋ฐ์ํ