๐ค๋ฌธ์ ํด๊ฒฐ
-
S3 | ์ด๋ถํ์
์ด๋ถ ํ์์ ๊ธฐ๋ณธ๋ฌธ์
์ด๋ถํ์์ด๋? ํ์ ๋ถ๋ถ์ ๋ ๋ถ๋ถ์ผ๋ก ๋ถํ ํด์ ๋ต์ ์ฐพ๋ ๊ณผ์ ์ด๋ค.
1๋ถํฐ 10๊น์ง ๊ฐ์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋ 7์ด๋ ๊ฐ์ ์ฐพ์๋ณด์
์ต์๋ 1์ด๊ณ ์ต๋๋ 10์ด๋ค. ์ ๋ฐ์ผ๋ก ๋๋๋ฉด 5์ธ๋ฐ
์ด์ด ์ข์์ 5๊ฐ ๋ง์ผ๋ฉด ์ ๋ต, ํ์ง๋ง ์ฐพ๋ ๊ฐ์ 7์ด๋ฏ๋ก ์ ๋ต์ด ์๋๋ค
ํฌ๊ธฐ๋ฅผ ๋น๊ตํด์ ์ฐพ๋ ๊ฐ์ด 5๋ณด๋ค ์์ผ๋ฉด ์ต๋๋ฅผ ์ค์ด๊ณ ,
์ฐพ๋ ๊ฐ์ด 5๋ณด๋ค ํฌ๋ฉด ์ต์๋ฅผ ๋๋ฆฐ๋ค.
์ฐพ๋ ๊ฐ์ด 5๋ณด๋ค ํฌ๋ฏ๋ก ์ต์๋ฅผ ๋๋ฆฐ๋ค.
์ต์๋ ์ ๋ฐ+1 ์ต๋๋ ๊ทธ๋๋ก 10์ด๋ค. ์ ๋ฐ์ผ๋ก ๋๋๋ฉด 8
์ฐพ๋ ๊ฐ์ 8๋ณด๋ค ์์ผ๋ฏ๋ก ์ต๋๋ฅผ ์ค์ธ๋ค.
์ต์๋ 6 ์ต๋๋ ์ ๋ฐ-1์ด๋ค. ์ ๋ฐ์ผ๋ก ๋๋๋ฉด 6
์ฐพ๋ ๊ฐ์ด 6๋ณด๋ค ํฌ๋ฏ๋ก ์ต์๋ฅผ ๋๋ฆฐ๋ค.
์ต์๋ ์ ๋ฐ+1 ์ต๋๋ 7์ด๋ค. ์ ๋ฐ์ผ๋ก ๋๋๋ฉด 7์ด๋ฏ๋ก ์ ๋ต!
4๋ฒ๋ง์ ์ ๋ต์ ์ฐพ์๋ค. for๋ฌธ์ผ๋ก ๋๋ฉด 7๋ฒ๋ง์ ์ฐพ์๊ฒ์ด๋ค.
๋ง์ฝ ๊ฐ์ด ์ด๋ง๋ฌด์ํ๊ฒ ์ปค์ง๋ค๋ฉด ํจ์จ๋ฉด์์ ๋งค์ฐ ํฐ ์ฐจ์ด๊ฐ ๋ ๊ฒ์ด๋ค.
๐ป์์ค ์ฝ๋
N = int(input())
budgets = list(map(int, input().split()))
M = int(input())
left = 0
right = max(budgets)
result = 0
while right >= left:
mid = (left + right) // 2
answer = 0
for budget in budgets:
if budget > mid:
answer += mid
else:
answer += budget
# answer: ๋ด๊ฐ ์ฑ
์ ํ ์ด ์์ฐ, M: ์ต๋ ์์ฐ
if answer > M:
right = mid - 1
else:
left = mid + 1
result = max(result, answer)
print(right)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/2512
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 1325. ํจ์จ์ ์ธ ํดํน (0) | 2020.10.28 |
---|---|
[python] ๋ฐฑ์ค - 10773. ๊ดํธ (0) | 2020.10.27 |
[python] ๋ฐฑ์ค - 1874. ์คํ ์์ด (0) | 2020.10.25 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ (์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ1) (4) | 2020.10.24 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - 3์ง๋ฒ ๋ค์ง๊ธฐ (์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ1) (2) | 2020.10.22 |