๐Ÿงฉ Algorithm/[BOJ] Silver

BOJ 16401๋ฒˆ : ๊ณผ์ž ๋‚˜๋ˆ ์ฃผ๊ธฐ (Python/Silver 2)

devCloud 2023. 3. 20. 22:26
728x90
 

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)
728x90