Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 2110. ๊ณต์œ ๊ธฐ ์„ค์น˜

deo2kim 2020. 10. 16. 08:03
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • S2 | ์ด๋ถ„ํƒ์ƒ‰

ํŠน์ • ๋ฒ”์œ„ ์•ˆ์—์„œ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•œ๋‹ค? => ์ด๋ถ„ ํƒ์ƒ‰

  • ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ๊ฐ„๊ฒฉ๊ณผ ์ตœ๋Œ€๊ฐ„๊ฒฉ์˜ ์ค‘๊ฐ„๊ฐ’๋ถ€ํ„ฐ ์‹œ์ž‘
  • ์ค‘๊ฐ„๊ฐ’(๊ณต์œ ๊ธฐ ์„ค์น˜ ๊ฐ„๊ฒฉ)์œผ๋กœ ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ ํ–ˆ์„ ๋•Œ
    • ์„ค์น˜ํ•œ ๊ณต์œ ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์„ค์น˜ ๊ฐ„๊ฒฉ์„ ์ขํ˜€์„œ ๋” ๋งŽ์ด ์„ค์น˜ํ•˜์ž
    • ์„ค์น˜ํ•œ ๊ณต์œ ๊ธฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์„ค์น˜ํ•œ ๊ฐ„๊ฒฉ์„ ๋Š˜๋ ค์„œ ๋œ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ตœ๋Œ€๋กœ ๊ฐ„๊ฒฉ์„ ๋Š˜๋ ค๋ณด์ž

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

import sys

N, C = map(int, input().split())
house = [int(sys.stdin.readline()) for _ in range(N)]

# ์ •๋ ฌ
house.sort()

# ์™€์ดํŒŒ์ด ๊ฐ„๊ฒฉ์„ ์–ผ๋งˆ๋‚˜ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๋‹ˆ ์ตœ๋Œ€๊ฑฐ๋ฆฌ์™€ ์ตœ์†Œ๊ฑฐ๋ฆฌ์˜ ์ค‘๊ฐ„๋ถ€ํ„ฐ ์‹œ์ž‘
left = 1
right = house[-1] - house[0]
answer = 0
while right >= left:
    # ์ค‘๊ฐ„๊ฐ’ (์™€์ดํŒŒ์ด ๊ฐ„๊ฒฉ)
    mid = (right + left) // 2

    # ์™€์ดํŒŒ์ด ์„ค์น˜ # ์ฒ˜์Œ ์„ค์น˜ํ•˜๊ณ  ์‹œ์ž‘
    wifi_cnt = 1
    before_install = house[0]
    for i in range(1, N):
        if house[i] >= before_install + mid:  # ์„ค์น˜ ๊ฐ„๊ฒฉ ์ถฉ์กฑ
            wifi_cnt += 1
            before_install = house[i]

    # ์™€์ดํŒŒ์ด ๊ฐœ์ˆ˜๊ฐ€ C๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋” ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ„๊ฒฉ์„ ์ขํžˆ์ž.
    if wifi_cnt < C:
        right = mid - 1
    # ์™€์ดํŒŒ์ด ๊ฐœ์ˆ˜๊ฐ€ C๋ณด๋‹ค ๋งŽ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ๋œ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ„๊ฒฉ์„ ๋„“ํžˆ์ž.
    else:
        left = mid + 1
        # ์ค‘๊ฐ„์— mid๋ฅผ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” ๊ฐœ์ˆ˜๋ฅผ ๋งŒ์กฑํ•  ๋•Œ ๊ฐ„๊ฒฉ์„ ๋Š˜๋ฆฌ๋ ค๋‹ค๊ฐ€
        # ๋‹ค์Œ์—๋Š” ๊ฐœ์ˆ˜๋ฅผ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๊ณ  while๋ฌธ์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค.
        answer = mid

print(answer)
 

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/2110

 

2110๋ฒˆ: ๊ณต์œ ๊ธฐ ์„ค์น˜

์ฒซ์งธ ์ค„์— ์ง‘์˜ ๊ฐœ์ˆ˜ N (2 ≤ N ≤ 200,000)๊ณผ ๊ณต์œ ๊ธฐ์˜ ๊ฐœ์ˆ˜ C (2 ≤ C ≤ N)์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ง‘์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” xi (1 ≤ xi ≤ 1,000,000,000)๊ฐ€ ๏ฟฝ

www.acmicpc.net

๋ฐ˜์‘ํ˜•