๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’๊ณต๋ถ€/์•Œ๊ณ ๋ฆฌ์ฆ˜

[๋ฐฑ์ค€] 1654๋ฒˆ ๋žœ์„  ์ž๋ฅด๊ธฐ

by rindev 2020. 11. 20.

๋žœ์„ ์„ ์™œ ์ž๋ฅด๋‹ˆ ์–˜๋“ค์•„..

 

www.acmicpc.net/problem/1654

 

1654๋ฒˆ: ๋žœ์„  ์ž๋ฅด๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์˜ค์˜์‹์ด ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ K, ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค. K๋Š” 1์ด์ƒ 10,000์ดํ•˜์˜ ์ •์ˆ˜์ด๊ณ , N์€ 1์ด์ƒ 1,000,000์ดํ•˜์˜ ์ •์ˆ˜์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ K โ‰ฆ N ์ด๋‹ค. ๊ทธ

www.acmicpc.net

 

๋‚œ ์•„์ง... ์ด๋ถ„ํƒ์ƒ‰์˜ while ํƒˆ์ถœ ์กฐ๊ฑด์„ ์•„์ง ์ž˜ ๋ชป ์žก๋Š”๋‹ค.................ใ… ใ…  ์–ธ์ œ์ฏค ์ต์ˆ™ํ•ด์งˆ๊นŒ.. ์–ด์จŒ๋“ 

 

๋งจ ์ฒ˜์Œ์— ํ–ˆ๋˜ ์ƒ๊ฐ์€ ์ตœ์ข… ๋‹ต์•ˆ์ด๋ž‘ ๊ฑฐ์˜ ๋น„์Šทํ•œ๋ฐ ๋ฐ˜๋ณต ์กฐ๊ฑด์„ ๋ชป์žก๊ณ  ํ—ค๋งธ๋‹ค.

์Šคํ„ฐ๋””์—์„œ ๋‹ค๊ฐ™์ด ์–˜๊ธฐํ•˜๋‹ค๊ฐ€ ์ง‘์—์„œ ํ’€์–ด๋ณด๊ธฐ๋กœํ•˜๊ณ  ์ง‘์—์™”๋Š”๋ฐ ๊ฐ€๋ฌผ๊ฐ€๋ฌผ,,ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

์•”ํŠผ ๋‘๋ฒˆ์งธ ์ƒ๊ฐ์€ ๊ทธ๋ž˜์„œ 0๋ถ€ํ„ฐ ๊ฐ€์žฅ ์งง์€๋žœ์„ ๊นŒ์ง€๋ฅผ ๋ฒ”์œ„๋กœ ์ƒ๊ฐํ–ˆ๋‹ค.

 

๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๊ฐ€์žฅ ์ž‘์€๊ฑธ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋ฉด.. ๋ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์‹ค์ œ๋กœ ์ž…๋ ฅ์˜ˆ์ œ๋Š” ์ €๋ ‡๊ฒŒ ํ’€์–ด๋„ ๋™์ž‘ํ•จ.

 

 

๊ทผ๋ฐ!!!!!!!!!!!!!!!!!!!!! ์ด๋ ‡๊ฒŒ min์ด ๊ทน๋‹จ์ ์œผ๋กœ ์งง์€ ๊ฒฝ์šฐ๋Š” ์–˜๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค...

N=4์ด๋ฏ€๋กœ 4๊ฐœ์˜ ๊ธธ์ด๊ฐ€ ๋˜‘๊ฐ™์€ ๋žœ์„ ์„ ๋งŒ๋“ค๊ณ ์‹ถ์€๋ฐ, ์ƒ๋‹จ์ฒ˜๋Ÿผ ๊ฐ€์žฅ ์งง์€๊ฒƒ์— ๋งž์ถ˜ ๊ฒƒ ๋ณด๋‹ค

๋ฐ‘์— ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ์„ ์— ๊ธฐ์ค€์„ ๋งž์ถ”๊ณ , ๊ทธ๊ฑธ ๋‘๋ฒˆ ์ž๋ฅธ๊ฒŒ ๋” ๊ธด ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฅธ ๊ฐฏ์ˆ˜๊ฐ€ 6๊ฐœ๊ฐ€ ๋ผ๋„ ์ƒ๊ด€ ์—†๋‹ค. ๋ฌธ์ œ์— ๊ทธ๋ ‡๊ฒŒ ์จ์žˆ์œผ๋‹ˆ๊นŒ..

์•”ํŠผ ๋ฒ”์œ„๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค...ใ… ใ…  ์ด๊ฑธ ๋ชจ๋ฅด๊ณ  ์™œํ‹€๋ ธ์ง€ ์™œํ‹€๋ ธ์ง€ ํ•˜๋ฉด์„œ ์ด์ƒํ•œ๋ฐ ๊ณ„์† ๊ณ ์น˜๊ณ ์žˆ์—ˆ์Œ

๋ฒ”์œ„๋Š” ๋žœ์„  ๊ธธ์ด์˜ max ์ด์ƒ์œผ๋กœ๋Š” ๊ธธ์–ด์งˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, max๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์žก์•„์„œ ์ž๋ฅด๊ธฐ ์‹œ์ž‘ํ•จ.

 

# 1654๋ฒˆ : ๋žœ์„ ์ž๋ฅด๊ธฐ
def binary_search_1654():
k, n = map(int, input().split())
lan_wires = []
for _ in range(k):
lan_wires.append(int(input()))
# k, n = 4, 11
# lan_wires = [802, 743, 457, 539]
longest = max(lan_wires)
left = 1
right = longest
result = 0
while left <= right :
center = (left + right) // 2
# print('center=====', center)
hap = 0
for cm in lan_wires:
hap += cm // center #์ชผ๊ฐ  ๋žœ์„ ์˜ ๊ฐฏ์ˆ˜์˜ ํ•ฉ
if hap < n:
right = center -1 #๊ธธ์ด๋ฅผ ์ž‘๊ฒŒ๋งŒ๋“ค์–ด์„œ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ
elif hap >= n :
if center > result :
result = center
left = center +1 #๊ธธ์ด๋ฅผ ํ‚ค์›Œ์„œ ๊ฐฏ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ
print(result)

 

 

 

 

๋Œ“๊ธ€