๋ฌธ์
https://www.acmicpc.net/problem/2805
2805๋ฒ: ๋๋ฌด ์๋ฅด๊ธฐ
์ฒซ์งธ ์ค์ ๋๋ฌด์ ์ N๊ณผ ์๊ทผ์ด๊ฐ ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ ๋๋ฌด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) ๋์งธ ์ค์๋ ๋๋ฌด์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋๋ฌด์ ๋์ด์ ํฉ์ ํญ์ M๋ณด
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 2805๋ฒ ๋ฌธ์ - ๋๋ฌด ์๋ฅด๊ธฐ
import sys
n, m = map(int, sys.stdin.readline().split())
trees = list(map(int, sys.stdin.readline().split()))
start, end = 0, max(trees)
while start <= end:
mid = (start + end) // 2
tree = 0 # ์๋ฆฐ ๋๋ฌด ํฉ
for i in trees:
if i > mid: # mid ๋ชจ๋ค ํฐ ๋๋ฌด ๋์ด๋ ์๋ฆผ
tree += i - mid
if tree >= m: # ์ํ๋ ๋๋ฌด ๋์ด๋ณด๋ค ๋ ๋ง์ด ์๋ ธ์ผ๋ฉด
start = mid + 1
else: # ์ํ๋ ๋๋ฌด ๋์ด๋ณด๋ค ๋ ์๋ ธ์ผ๋ฉด
end = mid - 1
print(end)
์ด๋ถํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์๋ค.
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] [Python] Class2_10866๋ฒ_๋ฑ (0) | 2022.10.27 |
---|---|
[๋ฐฑ์ค] [Python] Class2_10816๋ฒ_์ซ์ ์นด๋2 (0) | 2022.10.27 |
[๋ฐฑ์ค] [Python] Class2_2108๋ฒ_ํต๊ณํ (0) | 2022.10.26 |
[๋ฐฑ์ค] [Python] Class2_1654๋ฒ_๋์ ์๋ฅด๊ธฐ (0) | 2022.10.26 |
[๋ฐฑ์ค] [Python] Class3_1012๋ฒ_์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.10.26 |