ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ธ๋ฃจ๋ ์ด์ N๊ฐ์ ๋ ์จ์ด ๋ค์ด๊ฐ๋๋ฐ, ๋ธ๋ฃจ๋ ์ด๋ฅผ ๋ นํํ ๋๋ ๋ ์จ์ ์์๊ฐ ๋ฐ๋๋ฉด ์ ๋๊ณ M๊ฐ์ ๋ธ๋ฃจ๋ ์ด์ ํ๋ ์ด ํ์์ด ๋ชจ๋ ๊ฐ๋๋ก ํด์ ๋ง๋ค์ด์ผ ํ๋ค. ์ด๋ ๊ฐ๋ฅํ ๋ธ๋ฃจ๋ ์ด์ ํฌ๊ธฐ ์ค ์ต์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ์ด ๋ฌธ์ ๋ ์ ํ์ ์ธ ์ด๋ถ ํ์ ๋ฌธ์ ์ด๋ค.
- start, end๋ฅผ `max(lesson)`, `sum(lesson)`๋ก ์ค์ ํ๋ค.
- ํ๋์ ๋ ์จ์ ๋ด๊ณ ์ ํ๋ค๋ฉด ์ต์ lesson์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋์ด์ผ ํ๋ค.
- ํ๋์ ๋ธ๋ฃจ๋ ์ด์ ๋ชจ๋ ๋ ์จ์ ๋ด๊ณ ์ ํ๋ค๋ฉด ๋ชจ๋ ๋ ์จ ์๊ฐ์ ํฉ์น ๊ฒ๊ณผ ๊ฐ์์ผ ํ๋ค.
- ์ด๋ถ ํ์์ ํตํด, ๋ธ๋ฃจ ๋ ์ด์ ๋ ์จ ์๊ฐ์ ๋ณ๊ฒฝํ๋ฉฐ ํ์์ ์งํํ๋ค.
์ฝ๋
if __name__ == '__main__':
n, m = map(int, input().split())
lesson = list(map(int, input().split()))
start, end = max(lesson), sum(lesson)
while start <= end:
mid = (start + end) // 2
cnt = 0
play_time = 0
for l in lesson:
# play_time์ด m๋ณด๋ค ์ปค์ง๋ฉด ์๋ก์ด dvd ํ์
if play_time + l > mid:
cnt += 1
play_time = 0
play_time += l
cnt += 1 if play_time else 0
if cnt <= m:
end = mid - 1
else:
start = mid + 1
print(start)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2573 ๋น์ฐ (0) | 2020.10.02 |
---|---|
๋ฐฑ์ค: 18405 ๊ฒฝ์์ ๊ฐ์ผ (0) | 2020.10.02 |
๋ฐฑ์ค: 5014 ์คํํธ๋งํฌ (0) | 2020.10.01 |
๋ฐฑ์ค: 16195 1, 2, 3 ๋ํ๊ธฐ 9 (0) | 2020.09.30 |
๋ฐฑ์ค: 15993 1, 2, 3 ๋ํ๊ธฐ 8 (0) | 2020.09.30 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ