ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ์ง๊ฒ๋ค๋ฆฌ
dirmathfl 2020. 11. 4. 23:28728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ถ๋ฐ์ง์ ๋ถํฐ ๊ฑฐ๋ฆฌ๋งํผ ๋จ์ด์ง ๊ณณ์ ๋์ฐฉ์ง์ ์ด ์๋ค. ์ด๋ ๊ทธ ์ฌ์ด์ ์๋ ๋ฐ์๋ค ์ค ๋ช ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ํ๋ค. ํน์ ๋ฐ์๋ฅผ `N`๊ฐ๋งํผ ์ ๊ฑฐํ ๋ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ด ์ต๋๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
์ด ๋ฌธ์ ๋ ๋ฌธ์ ์ ๋ถ๋ฅ์ ๊ฐ์ด `์ด๋ถ ํ์`์ผ๋ก ํด๊ฒฐํ ์ ์๋ค. `์ด๋ถ ํ์`์ ํตํด ์ต์๊ฐ ๊ธฐ์ค์ผ๋ก, ๋น ์ง ๋์ ๊ฐ์๋ฅผ ์นด์ดํธํ ํ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ด ์ต๋๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
์ฝ๋
from math import inf
def solution(distance, rocks, n):
answer = 0
rocks.sort()
start, end = 0, distance
while start <= end:
mid = (start + end) // 2
prev, rock_cnt = 0, 0
cur_min = inf
for rock in rocks:
if rock - prev < mid:
rock_cnt += 1
else:
cur_min = min(cur_min, rock - prev)
prev = rock
if rock_cnt > n:
end = mid - 1
else:
answer = cur_min
start = mid + 1
return answer
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: N์ผ๋ก ํํ (0) | 2020.11.06 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ์ด์ค์ฐ์ ์์ํ (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.03 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ผ๊ทผ ์ง์ (0) | 2020.11.02 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ซ์ ๊ฒ์ (0) | 2020.11.02 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ