DevYoon
[๋ฐฑ์ค] 2805. ๋๋ฌด ์๋ฅด๊ธฐ (Python) ๋ณธ๋ฌธ
link ๐ https://www.acmicpc.net/problem/2805
โ๏ธ ์ด๋ถํ์ ๋ฌธ์ !
โ๏ธ ์ด๋ถํ์์ ํตํด ๊ฐ์ฅ ์ ์ ํ ์ ๋จ๊ธฐ ๋์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์๋ค.
โ๏ธ ๋๋ฌด์ ๋์ด๊ฐ 0๋ถํฐ 1000000000 ์ฌ์ด์ด๋ฏ๋ก, s๋ฅผ 0, e๋ฅผ ๊ฐ์ฅ ๋์ ๋๋ฌด์ ๋์ด๋ก ๋์๋ค.
โ๏ธ ์ด๋ถํ์์ ๊ธฐ๋ณธ ๊ฐ๋
์ ๋ณต์ตํ๊ธฐ์ ์ข์ ๋ฌธ์ ์๋ค.
N, M = map(int, input().split())
trees = list(map(int, input().split()))
# ๋๋ฌด์ ๋์ด๋ 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์ ๋๋ 0 => s๋ 0, e๋ ๊ฐ์ฅ ๋์ ๋๋ฌด์ ๋์ด
s = 0
e = max(trees)
# ์ด๋ถ ํ์
while s <= e:
mid = (s+e)//2
# ์๋ผ๋ผ ์ ์๋ ๋๋ฌด์ ๊ธธ์ด ํฉ ๊ตฌํ๊ธฐ
temp = sum(tree-mid for tree in trees if tree-mid>0)
# ๋๋ฌด๋ฅผ ๋ ๋ง์ด ์๋ผ๋ฒ๋ ธ๋ค๋ฉด ์ ๋จ๊ธฐ ๋์ด๋ฅผ ๋์ฌ์ผ ํ๋ฏ๋ก s๋ฅผ mid+1๋ก ์ฎ๊ฒจ์ค
if temp >= M:
s = mid+1
# ๋๋ฌด๋ฅผ ๋ ์๋๋ค๋ฉด ์ ๋จ๊ธฐ ๋์ด๋ฅผ ๋ฎ์ถฐ์ผ ํ๋ฏ๋ก e๋ฅผ mid-1๋ก ์ฎ๊ฒจ์ค
else:
e = mid-1
print(e)