βοΈ λ¬Έμ
https://school.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λͺ μ΄νμ λλ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: νλ‘κ·Έλλ¨Έμ€ Level 3
β μμ μκ°: 1μκ° 47λΆ
β κΆμ₯ μκ°: 1μκ°
λͺ¨λ λ¬Έμ λ₯Ό κΆμ₯ μκ° μμ μ’ νμ΄λ³΄κ³ μΆλ€. λ무 격νκ².
π‘ νμ΄
1) λ¬Έμ μ ν νμ
νλ‘κ·Έλλ¨Έμ€μμλ λ¬Έμ μ νμ λ°λ‘ 보μ¬μ£ΌκΈ° λλ¬Έμ μ€λμ μ ν νμ μκ°μ λ°λ‘ κ°μ§λ μμλ€.
μ€ν°λ 1μΌμ°¨/2μΌμ°¨μ νΌ λ¬Έμ λ μ ν(μ λ ₯ λ²μ λ§€μ° νΌ, μ΅μκ° λλ μ΅λκ° κ΅¬νκΈ°)μ΄ μμ ν λμΌνλ€. μ΄μ μ΄λΆ νμμΌλ‘ ν μ μλ μ νμ΄ λμ§ λ³΄μ΄λ κ² κ°κΈ΄ νλ° κ΅¬ννλ 건 μμ§λ μ‘°κΈ μ΄λ €μμ λ λ§μ΄ νμ΄λ΄μΌκ² λ€.
2) μμ΄λμ΄ νλ¦
μ΄μ μ νΌ 2κ°μ λ¬Έμ μμλ μμ΄λμ΄ νλ¦μ μ 리ν λ κ·Έλ₯ ν΅μ¬ 1, 2λ‘ νκΈ°νλλ°, μ±μ§νΌν°μ λμμ μ‘°κΈ λ°μμ μ’μ ννμ κ°μ Έμλ€.
β βν΅μ¬ (1) - λ²μ μ€μ β
end λ³μμ μ΄κΈ°κ°μ λν΄ κ³ λ―Όν΄λ³Ό νμκ° μλ€. μ ν μ¬νμμ μ£Όμ΄μ§ μ΅λκ°μ μ¨λ μκ΄μμ κ² κ°μ§λ§ μ‘°κΈμ΄λλ§ νμ λ²μλ₯Ό μ€μ΄κΈ° μν κ³Όμ μ΄λ€.
μ κ΅μ¬μ¬κ° κ°μ₯ μ€λ 걸리λ κ²½μ°λ μ¬μ¬ μκ°μ΄ κ°μ₯ κΈ΄ μ¬μ¬κ΄μ΄ nλͺ μ λͺ¨λ μ²λ¦¬νλ κ²μ΄λ€. λ¬Έμ μμ μ£Όμ΄μ§ 쑰건μ μ΄μ©ν΄ νννλ©΄ n*max(times)λΌκ³ ν μ μκ³ μ΄ κ°μΌλ‘ end λ³μλ₯Ό μ΄κΈ°νν΄μ€¬λ€.
μ΄ κ³Όμ μμ mid κ°μ μλ―Έλ μ μλλλ° mid κ°μ λͺ¨λ μ¬λμ΄ μ¬μ¬λ₯Ό λ°μ μ μλ μμμ μκ°μ λ»νλ€.
β‘ βν΅μ¬ (2) - μ΄λΆ νμ λμ μ€μ β
λ΄κ° μμ§ μ΄λΆ νμ λ¬Έμ λ₯Ό μ΄λ €μνλ μ΄μ λ μ΄ λΆλΆ λλ¬Έμ΄λ€. μλλ 1μΌμ°¨/2μΌμ°¨ λ¬Έμ μμ μ¬μ©ν μ΄λΆ νμ λμμ΄λ€.
1οΈβ£ BOJ κ²μ: μΉλ₯ (μ΄ λμ mid κ°μ μΆκ°λ‘ μ§ννλ κ²μ νμλ₯Ό μλ―Έ)
2οΈβ£ BOJ μ§κ²λ€λ¦¬: μ ν 거리 λμ ν©(μ΄ λμ mid κ°μ Kλ²μ§Έ μ§κ²λ€λ¦¬μμμ μ ν 거리λ₯Ό μλ―Έ)
μ΄λ²μ μ΄ ννΈ λ΄μ©μ΄ μ’ κΈΈμ΄μ§ κ² κ°μμ λ΄μ©μ μ’ λ μΈλΆνν΄λ³΄κ² λ€.
Step. 1
λ¨Όμ μ΄λ»κ²λ λ λ¬Έμ μ νμ λΌμ λ§μΆ°μ νμ λμμ μ°Ύμλ³΄λ €κ³ νλ€. κ²μ λ¬Έμ λ μΉλ₯ μ μ΄μ©ν΄μΌ νλ€λ κ² λͺ ννκ² λ³΄μκΈ° λλ¬Έμ ν¨μ€νκ³ μ§κ²λ€λ¦¬ λ¬Έμ μμ μ΄ λμ ν© κ°λ μ μ¬μ©ν μ μμ κ² κ°μλ€.
Step. 2
λμ ν©μ μ¬μ©νκΈ°λ‘ νμΌλ©΄ μ΄λ€ κ°μ μ΄ κ°λ μ μ μ©ν μ§ κ΅¬μ²΄νν΄μΌ νλ€. μ¬μ€ μ²λ¦¬ μΈμ μ λ§κ³ λ€λ₯Έ κ°μ΄ λ μ€λ₯΄μ§ μμμ μ΄ κ°μ μ¬μ©νλλ° μ΄μ΄ μ’κ² λ°©ν₯μ΄ μ λ§μλ κ² κ°λ€.
μ²λ¦¬ μΈμ μλ midλ₯Ό times μμ μλ κ°(timeμΌλ‘ νν)μΌλ‘ λλ λͺ«μ λν΄μ£Όλ©΄μ λλ €κ°λ©΄ λλ€. midλ₯Ό μ κ°μΌλ‘ λλλ μ΄μ λ mid//timeμ΄ ν΄λΉ μ¬μ¬κ΄μ΄ μ΅λλ‘ μ²λ¦¬ν μ μλ μΈμμ΄κΈ° λλ¬Έμ΄λ€.
λμ μ²λ¦¬ μΈμμ΄ nλ³΄λ€ ν΄ κ²½μ°: μμμ μκ° mid μμ λͺ¨λ μΈμμ μ²λ¦¬ν μ μλ€λ λ»μ΄λ€. λ¬Έμ μμ μꡬν μ¬νμ 'μ΅μκ°'μ΄κΈ° λλ¬Έμ end = mid-1λ‘ μ€μ¬ κ°μ₯ μμ κ°μ μ°Ύμλκ°λ©΄ λλ€.
λμ μ²λ¦¬ μΈμμ΄ nλ³΄λ€ μμ κ²½μ°: λͺ¨λ μΈμμ μ²λ¦¬νκΈ°μλ μκ°μ΄ λΆμ‘±νλ€λ μλ―Έμ΄κΈ° λλ¬Έμ start = mid+1λ‘ λλ € κ°μ μ¦κ°μν¨λ€.
3) ꡬν
def solution(n, times):
answer = float("inf")
times.sort()
start, end = 1, n*max(times)
while start <= end:
mid = (start+end)//2
done = 0
for time in times:
done += mid//time
if done >= n:
answer = min(mid, answer)
end = mid-1
else:
start = mid+1
return answer
4) μ΄λ €μ λ μ /λ°°μ΄ μ
π¨ μ΄λ €μ λ μ
- μ ν 거리 λμ ν©μ΄ Nλ³΄λ€ ν΄ λ, μμ λμ μλ―Έλ₯Ό νμ νλ λ°μ μκ°μ΄ μ‘°κΈ κ±Έλ Έλ€.
β λ°°μ΄ μ
- μ΄λΆ νμ μ ν λ¬Έμ λ₯Ό ν λλ λ²μ μ€μ → μ΄λΆ νμ λμ μ€μ → νμ 쑰건 κ²μ¬ μ΄ μΈ λ¨κ³λ₯Ό κΈ°μ΅ν΄λκ³ μ¬μ©νλ©΄ μ’λ€λ κ²μ λ°°μΈ μ μμλ€.
- μ΄ λ¬Έμ λ μ²μμ μ λ ¬ μμ΄ μ μΆνλλ° ν΅κ³Όκ° λμ§λ§ μ΄λΆ νμ μ νμ νκ² λλ©΄ νμ μ λ ¬νκ³ μμνλ μ΅κ΄μ κ°μ ΈμΌκ² λ€.
'Problem Solving > [νν΄99] TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
99ν΄λ½ μ½ν μ€ν°λ 6μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.11.03 |
---|---|
99ν΄λ½ μ½ν μ€ν°λ 5μΌμ°¨ TIL / BFS(λλΉ μ°μ νμ) (0) | 2024.11.02 |
99ν΄λ½ μ½ν μ€ν°λ 4μΌμ°¨ TIL / DFS(κΉμ΄ μ°μ νμ) (0) | 2024.10.31 |
99ν΄λ½ μ½ν μ€ν°λ 2μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.29 |
99ν΄λ½ μ½ν μ€ν°λ 1μΌμ°¨ TIL / μ΄λΆ νμ (0) | 2024.10.28 |