๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ตญ ์ฌ์ฌ
ํ์ด ๊ณผ์
์ด ๋ฌธ์ ๋ ์ ๋ ฅ๊ฐ์ด ๋งค์ฐ ํฌ๊ฒ ์ฃผ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ์์ ์ํํ๋ฉด ํ์ ์์์ด ๋ฐ์ํฉ๋๋ค.
ํจ์จ์ฑ์ ๊ณ ๋ คํ์ง ์๊ณ ์ฒ์ ๋ ์ฌ๋ฆฐ ํด๋ฒ์ times
๋ฐฐ์ด๊ณผ ํฌ๊ธฐ๊ฐ ๊ฐ์ jobs
๋ฐฐ์ด์ ์์ฑํ ๋ค,
ํด๋น ๋ฐฐ์ด์๋ ํ์ฌ ์๋์ ์
๋ฌด๊ฐ ๋๋๋ ์๊ฐ์ ๊ธฐ๋กํ๊ณ ๋ค์๋ฒ ์๋์ ์
๊ตญ ์ฌ์ฌ๋๋ฅผ ๊ณ ๋ฅผ๋๋
๊ฐ ์ฌ์ฌ๋์ ์๊ฐ์ jobs
๋ฐฐ์ด์ ๊ฐ๊ฐ ๋ํด๋ณธ ๋ค์ ๊ฐ์ฅ ์งง์ ์ฌ์ฌ๋๋ก ๋ฐฐ์น์ํค๋ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์๊ฐ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ฏ๋ก ๋ณด๋ค ํจ์ธ์ ์ธ ํ์์ ์ํด ์ด์ง ํ์
์ ํ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
์ต์
์ ๊ฒฝ์ฐ ์์๋๋ ์๊ฐ์ ์ผ๋ง์ผ๊น์? ๊ทธ๊ฑด ๋ฐ๋ก ๋ชจ๋ ์๋์ด ๊ฐ์ฅ ๋๋ฆฐ ์ฌ์ฌ๋์์ ์ฌ์ฌ๋ฅผ ๋ฐ๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ hi
๋ฅผ ์ด ๊ฐ์ผ๋ก ์ค์ ํด์ค ๋ค์, mid
์ ํด๋นํ๋ ์๊ฐ์ ์๋์ ์ ๋ถ ๊ฐ๋นํ ์ ์๋ค๋ฉด ํ์ ๋ฒ์๋ฅผ ๋ ์์ ์ชฝ์ผ๋ก,
๋ง์ฝ ๊ฐ๋น์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ํ์ ๋ฒ์๋ฅผ ๋ ํฐ ์ชฝ์ผ๋ก ์ฎ๊ฒจ์ ์ต์ ์ ์๊ฐ์ ์ฐพ์๋์ต๋๋ค.
์ด๋ ์ฃผ์ด์ง ์๊ฐ์ ์๋์ ์ ๋ถ ์ฒ๋ฆฌํ ์ ์๋์ง ํ์ธํ๋ ๊ณผ์ ์์๋ ๊ฐ ์ฌ์ฌ๊ด๋ง๋ค
์ฃผ์ด์ง ์๊ฐ ๋ด์ ์ฒ๋ฆฌํ ์ ์๋ ์๋์ ์๋ฅผ ํฉํด์
๋ชฉํ ์๋์์ ๋๋ฌํ๋ค๋ฉด ๋ฐ๋ก True
๋ฅผ ๋ฐํํ๋๋ก ํ์ฌ ๋ถํ์ํ ํ์ ์๊ฐ์ ์ค์์ต๋๋ค.
์ฝ๋
def can_work(times, due, goal):
for time in times:
goal -= (due // time)
if goal <= 0:
return True
return False
def solution(n, times):
answer = 0
lo = 1
hi = n * max(times)
while lo < hi:
mid = (lo + hi) // 2
if can_work(times, mid, n):
answer = mid
hi = mid
else:
lo = mid + 1
return answer
n = 6
times = [7, 10]
print(solution(n, times)) # ๋ต์ 28
'๐ algorithm > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค Level 2 - ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2021.03.01 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 4 - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ์ถ์ ํธ๋ํฝ (0) | 2021.03.01 |
ํ๋ก๊ทธ๋๋จธ์ค Level 3 - ๋ธ๋ก ์ด๋ํ๊ธฐ (0) | 2021.03.01 |
๐ฌ ๋๊ธ