ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

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

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

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์•ž์„œ ๋‹ค๋ฃฌ, ๋žœ์„  ์ž๋ฅด๊ธฐ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ์™€ ๋™์ผํ•œ ์ด๋ถ„ ํƒ์ƒ‰ ์œ ํ˜•์˜ ๋ฌธ์ œ์ด๋‹ค. N๊ฐœ์˜ ์ง‘์ด ์ฃผ์–ด ์งˆ ๋•Œ, ๊ฐ๊ฐ์˜ ์ง‘ ์‚ฌ์ด์— C๊ฐœ์˜ ๊ณต์œ ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ์„ค์น˜ํ•˜๋Š” ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ 1์˜ ๊ฒฝ์šฐ 1 2 4 8 9์™€ ๊ฐ™์ด ์ง‘์ด ์œ„์น˜ํ•œ๋‹ค. ๊ณต์œ ๊ธฐ 3๋Œ€๋ฅผ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋กœ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 3์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด๋ถ„ ํƒ์ƒ‰์œผ๋กœ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” 1๊ณผ ๋งˆ์ง€๋ง‰ ์ง‘์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋ถ„ ํƒ์ƒ‰์„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


if __name__ == "__main__":
    n, c = map(int, stdin.readline().split())
    locations = sorted([int(stdin.readline()) for _ in range(n)])
    s, e = 1, locations[-1] - locations[0]

    while s <= e:
        set_loc = 0
        m = (s + e) // 2
        set_cnt = 1

        for i in range(1, n):
            if locations[i] >= locations[set_loc] + m:
                set_cnt += 1
                set_loc = i

        if set_cnt >= c:
            s = m + 1
        else:
            e = m - 1

    print(e)

 ์ด์ „์˜ ๋ฌธ์ œ๋“ค๊ณผ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์ง‘์„ ์„ ํƒํ•˜๊ณ , ๊ฑฐ๋ฆฌ (mid) ๋งŒํผ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ด๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€