[BOJ][๐ŸŸก5][๋ฐฑ์ค€#02110] ๊ณต์œ ๊ธฐ ์„ค์น˜

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #2110


๋ฌธ์ œ

๋„ํ˜„์ด์˜ ์ง‘ N๊ฐœ๊ฐ€ ์ˆ˜์ง์„  ์œ„์— ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ง‘์˜ ์ขŒํ‘œ๋Š”ย x1, โ€ฆ, xN์ด๊ณ , ์ง‘ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๊ฐ™์€ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง€๋Š” ์ผ์€ ์—†๋‹ค. ๋„ํ˜„์ด๋Š” ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ์™€์ดํŒŒ์ด๋ฅผ ์ฆ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ ์ง‘์— ๊ณต์œ ๊ธฐ C๊ฐœ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ณณ์—์„œ ์™€์ดํŒŒ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ์ง‘์—๋Š” ๊ณต์œ ๊ธฐ๋ฅผ ํ•˜๋‚˜๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋‘ ๊ณต์œ ๊ธฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ํฌ๊ฒŒ ํ•˜์—ฌ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. C๊ฐœ์˜ ๊ณต์œ ๊ธฐ๋ฅผ N๊ฐœ์˜ ์ง‘์— ์ ๋‹นํžˆ ์„ค์น˜ํ•ด์„œ, ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋‘ ๊ณต์œ ๊ธฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ตœ๋Œ€๋กœ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

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


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—ย ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋‘ ๊ณต์œ ๊ธฐ ์‚ฌ์ด์˜ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

5 3
1
2
8
4
9


์ถœ๋ ฅ

3


My Sol

import sys
input = sys.stdin.readline

def binary_search():
    global houses, ans, N, C
    s, e = 1, houses[-1] - houses[0]
    while s <= e:
        m = (s + e) // 2
        cur = houses[0]
        cnt = 1
        for i in range(1, N):
            if houses[i] >= cur + m:
                cnt += 1
                cur = houses[i]

        if cnt < C:
            e = m-1
            continue

        s = m+1
        ans = m

N, C = map(int, input().split())
houses = sorted([int(input()) for _ in range(N)])
ans = 0
binary_search()
print(ans)

๊ณ ๋ฏผํ•ด๋„ ๋‹ต์ด ์•ˆ ๋‚˜์™€์„œ ๋ธ”๋กœ๊ทธ(๋งํฌ)๋ฅผ ์ฐธ๊ณ ํ•ด ํ’€์—ˆ๋‹ค.

์ด๋ถ„ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์˜ ๊ฒฐ๊ณผ์ธ mid๋Š” ๊ณต์œ ๊ธฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋กœ ๋‘๊ณ , ์ด ๊ฑฐ๋ฆฌ๋ฅผ ์กฐ์ •ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ฑฐ๋ฆฌ ๋‚ด์— ์ง‘๋“ค์ด ๋ถ„ํฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  1. ์ฒซ ์ง‘๋ถ€ํ„ฐ ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
  2. ์•ž์ง‘(cur)๊ณผ ํ˜„์žฌ ์„ค์ •๋œ ๊ณต์œ ๊ธฐ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•œ ๊ฐ’๊ณผ ์œ„์น˜๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋‹ค๋ฉด ํ•ด๋‹น ์œ„์น˜์˜ ์ง‘์— ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•ด๋‹น ์ง‘์„ ์•ž์ง‘์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  3. ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋งˆ๋‹ค cnt๋ฅผ 1์”ฉ ์˜ฌ๋ ค์ค€๋‹ค.
  4. ๋ชจ๋“  ์ง‘์„ ์กฐํšŒํ–ˆ๋‹ค๋ฉด, cnt๋ฅผ ํ™•์ธํ•œ๋‹ค.
  5. cnt๊ฐ€ ๊ณต์œ ๊ธฐ ๊ฐœ์ˆ˜(C)๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ณต์œ ๊ธฐ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ํฐ ๊ฒƒ์ด๋ฏ€๋กœ e๋ฅผ m-1๋กœ ์ค„์ธ๋‹ค.
  6. cnt๊ฐ€ C๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฉด ๊ณต์œ ๊ธฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋” ํ‚ค์›Œ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ s๋ฅผ m+1๋กœ ์ง€์ •ํ•˜๊ณ , ans๋ฅผ m์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ