-
[๋ฐฑ์ค] 6236 ์ฉ๋ ๊ด๋ฆฌ with PythonPS 2022. 6. 17. 13:16728x90๋ฐ์ํ
๐ BOJ 6236 ์ฉ๋ ๊ด๋ฆฌ
๐ก ์กฐ๊ฑด
- ํ์ฐ๋ ์์ผ๋ก N์ผ ๋์ ์์ ์ด ์ฌ์ฉํ ๊ธ์ก์ ๊ณ์ฐํ์๊ณ , ๋์ ํํ ์ฐ์ง ์๊ธฐ ์ํด ์ ํํ M๋ฒ๋ง ํต์ฅ์์ ๋์ ๋นผ์ ์ฐ๊ธฐ๋ก ํ์๋ค.
- ํ์ฐ๋ ํต์ฅ์์ K์์ ์ธ์ถํ๋ฉฐ, ํต์ฅ์์ ๋บ ๋์ผ๋ก ํ๋ฃจ๋ฅผ ๋ณด๋ผ ์ ์์ผ๋ฉด ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ ,
๋ชจ์๋ผ๊ฒ ๋๋ฉด ๋จ์ ๊ธ์ก์ ํต์ฅ์ ์ง์ด๋ฃ๊ณ ๋ค์ K์์ ์ธ์ถํ๋ค.
- ๋ค๋ง ํ์ฐ๋ M์ด๋ผ๋ ์ซ์๋ฅผ ์ข์ํ๊ธฐ ๋๋ฌธ์, ์ ํํ M๋ฒ์ ๋ง์ถ๊ธฐ ์ํด์ ๋จ์ ๊ธ์ก์ด ๊ทธ๋ ์ฌ์ฉํ ๊ธ์ก๋ณด๋ค
๋ง๋๋ผ๋ ๋จ์ ๊ธ์ก์ ํต์ฅ์ ์ง์ด๋ฃ๊ณ ๋ค์ K์์ ์ธ์ถํ ์ ์๋ค.
- ํ์ฐ๋ ๋์ ์๋ผ๊ธฐ ์ํด ์ธ์ถ ๊ธ์ก K๋ฅผ ์ต์ํํ๊ธฐ๋ก ํ์๋ค. ํ์ฐ๊ฐ ํ์ํ ์ต์ ๊ธ์ก K๋ฅผ ๊ณ์ฐํ๋ ๋ฌธ์ .
- 1๋ฒ์งธ ์ค์๋ N๊ณผ M์ด ๊ณต๋ฐฑ์ผ๋ก ์ฃผ์ด์ง๋ค. (1 โค N โค 100,000, 1 โค M โค N)
2๋ฒ์งธ ์ค๋ถํฐ ์ด N๊ฐ์ ์ค์๋ ํ์ฐ๊ฐ i๋ฒ์งธ ๋ ์ ์ด์ฉํ ๊ธ์ก์ด ์ฃผ์ด์ง๋ค. (1 โค ๊ธ์ก โค 10000)
์ฒซ ๋ฒ์งธ ์ค์ ํ์ฐ๊ฐ ํต์ฅ์์ ์ธ์ถํด์ผ ํ ์ต์ ๊ธ์ก K๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ด๋ถํ์ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin n, m = map(int, stdin.readline().split()) arr = [] for _ in range(n): arr.append(int(stdin.readline())) start = min(arr) end = sum(arr) while start <= end: mid = (start + end) // 2 money = mid cnt = 1 for i in arr: if money - i < 0: money = mid cnt += 1 money -= i if cnt > m or mid < max(arr): start = mid + 1 else: end = mid - 1 ans = mid print(ans)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
7 5 100 400 300 100 500 101 400
์คํ๊ฒฐ๊ณผ
500
โจ๏ธ ๋ฌธ์ ํ์ด
- i๋ฒ์งธ ๋ ์ ์ด์ฉํ ๊ธ์ก์ ๋ฆฌ์คํธ์ ์ ์ฅํด์ฃผ๊ณ ๊ฐ์ฅ ์์ ๊ฐ์ start, ๊ฐ์ฅ ํฐ ๊ฐ์ end๋ก ์ค์ ํด์ค๋ค.
- ๊ตฌํ ์ธ์ถ๊ธ์ก์ mid = (start + end) // 2๋ก ์ ํด์ฃผ๊ณ , ์ธ์ถํ ํ์ cnt๋ฅผ 1๋ก ์ค์ ํ๋ค.
- ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์(x : ํ์ฌ ์ํํ๋ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ธ์ก) ์ต์ ์ธ์ถ๊ธ์ก - x ์ ๊ฐ์ด 0๋ณด๋ค ์์ผ๋ฉด
์ธ์ถ๊ธ์ก money๋ฅผ mid ๋ก ์ ์ฅํ๋ค.
๋ง์ฝ ์ด ์กฐ๊ฑด์ ํด๋นํ์ง ์๋๋ค๋ฉด money - i ๊ฐ์ผ๋ก money๋ฅผ ๊ฐฑ์ ํ๋ค.
- arr ๋ฆฌ์คํธ๋ฅผ ๋ชจ๋ ์ํํ ํ, ์ถ๊ธ ํ์๊ฐ m ์ ๋์ด์ ๊ฒฝ์ฐ ํน์ mid ๊ฐ์ด arr์ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ๋
start ๋ฅผ mid + 1 ๊ฐ์ผ๋ก ๊ฐฑ์ ํ๋ค.
- (4)๋ฒ์ ์กฐ๊ฑด์ ํด๋นํ์ง ์๋๋ค๋ฉด, end ๊ฐ์ end - 1 ๋ก ๊ฐฑ์ ํ๋ค.
๋ํ ans์ ๊ฐ์ mid ๋ก ๊ฐฑ์ ํ๋ค.
- ์ด๋ถํ์์ด ๋๋๋ฉด ans ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14890 ๊ฒฝ์ฌ๋ก with Python (0) 2022.06.29 [๋ฐฑ์ค] 9996 ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง with Python (0) 2022.06.29 [๋ฐฑ์ค] 2225 ํฉ๋ถํด with Python (0) 2022.06.17 [๋ฐฑ์ค] 1915 ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ with Python (0) 2022.06.17 [๋ฐฑ์ค] 1700 ๋ฉํฐํญ ์ค์ผ์ค๋ง with Python (0) 2022.06.16