16401๋ฒ: ๊ณผ์ ๋๋ ์ฃผ๊ธฐ
์ฒซ์งธ ์ค์ ์กฐ์นด์ ์ M (1 ≤ M ≤ 1,000,000), ๊ณผ์์ ์ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์ ๊ณผ์ N๊ฐ์ ๊ธธ์ด L1, L2, ..., LN์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ๊ณผ์์ ๊ธธ์ด๋ (1 ≤ L1, L2, ..., LN ≤ 1,
www.acmicpc.net
๋ฌธ์
ํ์ต์ด๋ ์กฐ์นด๋ค์๊ฒ ์ต๋ํ ๊ธด ๊ณผ์๋ฅผ ๋๋ ์ฃผ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋๋ ์ค ๊ณผ์์ ๊ธธ์ด๊ฐ ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด ์กฐ์นด๋ผ๋ฆฌ ์ธ์์ด ์ผ์ด๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋์ ๋ชจ๋ ์กฐ์นด์๊ฒ ๊ฐ์ ๊ธธ์ด์ ๋ง๋ ๊ณผ์๋ฅผ ๋๋ ์ฃผ์ด์ผ ํ๋ค.
M๋ช ์ ์กฐ์นด๊ฐ ์๊ณ N๊ฐ์ ๊ณผ์๊ฐ ์์ ๋, ์กฐ์นด 1๋ช ์๊ฒ ์ค ์ ์๋ ๋ง๋ ๊ณผ์์ ์ต๋ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ผ.
๋จ, ๋ง๋ ๊ณผ์๋ ๊ธธ์ด์ ์๊ด์์ด ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋ ์ง ์ ์์ง๋ง, ๊ณผ์๋ฅผ ํ๋๋ก ํฉ์น ์๋ ์๋ค. ๋จ, ๋ง๋ ๊ณผ์์ ๊ธธ์ด๋ ์์ ์ ์์ฌ์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์กฐ์นด์ ์ M (1 ≤ M ≤ 1,000,000), ๊ณผ์์ ์ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค์ ๊ณผ์ N๊ฐ์ ๊ธธ์ด L1, L2, ..., LN์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ๊ณผ์์ ๊ธธ์ด๋ (1 ≤ L1, L2, ..., LN ≤ 1,000,000,000) ๋ฅผ ๋ง์กฑํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์กฐ์นด 1๋ช ์๊ฒ ์ค ์ ์๋ ๋ง๋ ๊ณผ์์ ์ต๋ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค. ๋จ, ๋ชจ๋ ์กฐ์นด์๊ฒ ๊ฐ์ ๊ธธ์ด์ ๋ง๋๊ณผ์๋ฅผ ๋๋ ์ค ์ ์๋ค๋ฉด, 0์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
3 10
1 2 3 4 5 6 7 8 9 10
์์ ์ถ๋ ฅ
8
ํ์ด
- ์ด๋ถํ์ ์ด์ฉ
Solution
M, N = map(int, input().split())
L = list(map(int, input().split()))
start = 1
end = max(L)
r = 0
while start <= end:
m = (start + end) // 2
cnt = 0
for i in L:
cnt += (i // m) #์์
if M <= cnt:
r = m
start = m + 1
elif M > cnt:
end = m - 1
else:
r = 0
print(r)'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 11659๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (Python/Silver 3) (0) | 2023.03.22 |
|---|---|
| BOJ 10816๋ฒ : ์ซ์ ์นด๋2 (Python/Silver 4) (0) | 2023.03.20 |
| BOJ 11399๋ฒ : ATM (Python/Silver 4) (0) | 2023.03.02 |
| BOJ 11047๋ฒ : ๋์ 0 (Python/Silver 4) (0) | 2023.02.19 |
| BOJ 1026๋ฒ : ๋ณด๋ฌผ (Python/Silver 4) (0) | 2023.02.19 |