๐ ๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/43238
๋ฌธ์ ์ค๋ช
n๋ช ์ด ์ ๊ตญ์ฌ์ฌ๋ฅผ ์ํด ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ฐ ์ ๊ตญ์ฌ์ฌ๋์ ์๋ ์ฌ์ฌ๊ด๋ง๋ค ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ค๋ฆ ๋๋ค.
์ฒ์์ ๋ชจ๋ ์ฌ์ฌ๋๋ ๋น์ด์์ต๋๋ค. ํ ์ฌ์ฌ๋์์๋ ๋์์ ํ ๋ช ๋ง ์ฌ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์์ ์ ์๋ ์ฌ๋์ ๋น์ด ์๋ ์ฌ์ฌ๋๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ๋นจ๋ฆฌ ๋๋๋ ์ฌ์ฌ๋๊ฐ ์์ผ๋ฉด ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๊ทธ๊ณณ์ผ๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์๋ ์์ต๋๋ค.
๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๋ก ํ๊ณ ์ถ์ต๋๋ค.
์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋ ์ n, ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ด๊ธด ๋ฐฐ์ด times๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋์ 1๋ช ์ด์ 1,000,000,000๋ช ์ดํ์ ๋๋ค.
- ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ 1๋ถ ์ด์ 1,000,000,000๋ถ ์ดํ์ ๋๋ค.
- ์ฌ์ฌ๊ด์ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
n/ times/ return
6 | [7, 10] | 28 |
์ ์ถ๋ ฅ ์ ์ค๋ช
๊ฐ์ฅ ์ฒซ ๋ ์ฌ๋์ ๋ฐ๋ก ์ฌ์ฌ๋ฅผ ๋ฐ์ผ๋ฌ ๊ฐ๋๋ค.
7๋ถ์ด ๋์์ ๋, ์ฒซ ๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ๋น๊ณ 3๋ฒ์งธ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ์ต๋๋ค.
10๋ถ์ด ๋์์ ๋, ๋ ๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ๋น๊ณ 4๋ฒ์งธ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ์ต๋๋ค.
14๋ถ์ด ๋์์ ๋, ์ฒซ ๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ๋น๊ณ 5๋ฒ์งธ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ์ต๋๋ค.
20๋ถ์ด ๋์์ ๋, ๋ ๋ฒ์งธ ์ฌ์ฌ๋๊ฐ ๋น์ง๋ง 6๋ฒ์งธ ์ฌ๋์ด ๊ทธ๊ณณ์์ ์ฌ์ฌ๋ฅผ ๋ฐ์ง ์๊ณ 1๋ถ์ ๋ ๊ธฐ๋ค๋ฆฐ ํ์ ์ฒซ ๋ฒ์งธ ์ฌ์ฌ๋์์ ์ฌ์ฌ๋ฅผ ๋ฐ์ผ๋ฉด 28๋ถ์ ๋ชจ๋ ์ฌ๋์ ์ฌ์ฌ๊ฐ ๋๋ฉ๋๋ค.
โ๏ธ ํ์ด
์ฌ์ฌ๊ด์ด ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ ์ฒด ์๊ฐ์ ์ด๋ถํ์ ํด๋๊ฐ๋ ๋ฌธ์ ์ด๋ค.
โป๏ธ ์ฒ์์๋ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ(์ฌ์ฌ๋ฅผ ๊ฐ์ฅ ์ค๋ํ๋ ์ฌ๋์ด ๋ชจ๋ ์ธ์์ ์ฌ์ฌํ๋ค๊ณ ํ ๋)์ ๊ธฐ์ค์ผ๋ก ํ์ฌ, ๋ฃจํ๋ฅผ ๋ ๋๋ง๋ค low/high ๋ฅผ ์ขํ๊ฐ๋ฉฐ ์กฐ์ ํ๋ค.
โป๏ธ ๊ฐ ์ฌ์ฌ์๋ง๋ค ๊ธฐ์ค์๊ฐ ๋์ ๋ช ๋ช ์ ์ฌ์ฌํ ์ ์๋์ง(๊ธฐ์ค์๊ฐ//์ฌ์ฌ์๊ฐ) ์ด ํฉ์ ๊ตฌํ๋ค.
โป๏ธ ํฉ์ด n๋ณด๋ค ๋ง์ผ๋ฉด, ๊ธฐ์ค ์๊ฐ ์์ ๋ชจ๋ ์ด๋ฅผ ์ถฉ๋ถํ ์ฌ์ฌํ ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก ์ต์ ์ ์๊ฐ์ ์ํด high๋ฅผ ์ขํ์ ๋ค์ ํ์ํด๋ณธ๋ค.
โป๏ธ ํฉ์ด n๋ณด๋ค ์์ผ๋ฉด, ๊ธฐ์ค ์๊ฐ๋์ ๋ชจ๋ ์ด๋ฅผ ์ฌ์ฌํ ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก low๋ฅผ ๋์ฌ์ ์ ์ฒด ์ฌ์ฌ์๊ฐ์ ๋๋ ค๋ณธ๋ค.
๐โ๏ธ ์๊ฒฌ
์ด๋ ค์์ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ์ ๊ทผํ๋๋ฐ ์๊ฐ์ด ๊ฝค ์ค๋ ๊ฑธ๋ ธ๋ค (ใ ใ )
์ด๋ถํ์์ผ๋ก ํ๊ธด ํ์ง๋ง ์ด๋ถํ์์ผ๋ก ์๋๊ปด์ง๋ค ํด์ผํ๋.................?
์ด๋ถํ์์ผ๋ก ๊ตฌํ ์ต์ ์ ์ฌ์ฌ์๊ฐ์ด๋ผ๋ฉด, ๋น ๋ฅด๊ฒ............์ฌ์ฌ๊ฐ ๋๋๋ณด๋ค
๐ป ์์ค์ฝ๋: ํ์ด์ฌ(Python)
def solution(n, times):
answer = 0
low = 0
high = max(times) * n # ๋ชจ๋ ์ธ์ ๊ฒ์ฌ์ ์ต๋๋ก ๊ฑธ๋ฆฌ๋ ์๊ฐ
while low <= high:
# ์
๊ตญ์ฌ์ฌ ์ต์ ์๊ฐ
# ์ฒ์์๋ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฌ์ฌ๊ด์ ์๊ฐ๊ณผ ๊ฐ์ฅ ์ ๊ฒ ๊ฑธ๋ฆฌ๋ ์ฌ์ฌ๊ด์ ์๊ฐ์ ํ๊ท ์ผ๋ก
mid = (low + high) //2
count = 0
for time in times:
count = count + mid // time
# ๋ชจ๋ ์ธ์์ ๊ฒ์ฌ ๊ฐ๋ฅ ํ๋ฉด break
if count >= n:
break
# ๋ชจ๋ ์ธ์์ ๊ฒ์ฌ ๊ฐ๋ฅํ๋ฉด answer๋ฅผ ์ง๊ธ์ผ๋ก ์
๋ฐ์ดํธ ํด์ฃผ๊ณ
# ์ต์ ์๊ฐ์ ์ค์ฌ๋๊ฐ๋ค. high๊ฐ ์ค์ด๋ค ์ ์๋ ์ด์ ์ต์๊ฐ์ด ๋ ์์ ์ ์๋ค.
if count >= n :
high = mid - 1
answer= mid
# ๋ชจ๋ ์ธ์์ ๊ฒ์ฌ ํ ์ ์์ผ๋ฉด ์ต์ ์๊ฐ์ ๋๋ฆฐ๋ค.
else :
low = mid +1
return answer
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ