-
[Python] ์ด์ฝํ - ๋ก๋ณถ์ด ๋ก ๋ง๋ค๊ธฐ (์ด์งํ์)๐ป Algorithm/Python 2021. 10. 20. 00:05
๋ฌธ์
๐ ์ฒซ ๋ฒ์งธ ์๋ (์ ํํ์)
- ์ด์งํ์ ํํธ์ธ ๊ฑด ์์ง๋ง ์ ์ด์งํ์์ ์จ์ผ ํ๋์ง ๋ชฐ๋์
- ์ ๋จ๊ธฐ์ ๋์ด๋ฅผ ๊ฐ์ฅ ๊ธด ๋ก์ ๊ธธ์ด๋ก ์ค์ ํ๊ณ 1์ฉ ์ค์ฌ๋๊ฐ๋ฉด์ ์๋ฆฐ ๋ก์ ๊ธธ์ด(rest)์ ํฉ์ ๊ณ์ฐ
n, m = map(int, input().split()) height = sorted(list(map(int, input().split())), reverse=True) for i in range(height[0], 0, -1): rest = list(map(lambda x: x-i if x>i else 0, height)) if sum(rest)>=m: print(i) break
โ ๋ ๋ฒ์งธ ์๋ (์ด์งํ์)
- ๋ก์ ๊ธธ์ด์ ์ ๋จ๊ธฐ์ ๋์ด๋ 0๋ถํฐ 10์ต๊น์ง์ ์ ์ ์ค ํ๋์ด๋ค.
- ์ด๋ ๊ฒ ํฐ ํ์ ๋ฒ์๋ฅผ ๋ณด๋ฉด ๋จ์ํ ์ ํํ์์ ์ฌ์ฉํ์์ ๋ ์๊ฐ์ด๊ณผ ํ์ ์ ๋ฐ์ ์ ์์ผ๋ฏ๋ก ์ด์งํ์์ ๋ ์ฌ๋ ค์ผ ํ๋ค.n, m = map(int, input().split()) height = list(map(int, input().split())) low = 0 high = max(height) answer = 0 while (low <= high): mid = (low + high) // 2 rest = list(map(lambda x: x-mid if x>mid else 0, height)) if sum(rest)<m: high = mid - 1 else: answer = mid low = mid + 1 print(answer)
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] LeetCode 121 Best Time to Buy and Sell Stock (DP) (0) 2022.07.02 [Python] ๋ฐฑ์ค - 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (DP) (0) 2021.10.26 [Python] ๋ฐฑ์ค - 1912 ์ฐ์ํฉ (DP) (0) 2021.10.25 [Python] ์ด์ฝํ - ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (์ด์งํ์) (0) 2021.10.20 [Python] ๋ฐฑ์ค - 11047 ๋์ 0 (Greedy) (0) 2021.10.03