λ¬Έμ
λ°±μ€ μ¨λΌμΈ μ μ§ - 15732λ²
νμ΄ κ³Όμ
μΌμ ν κ°κ²©μΌλ‘ λν λ¦¬κ° λμ¬μλ€κ³ νμ λ νΉμ μμμ λν λ¦¬κ° λ€μ΄μλ μμμ μμΉλ₯Ό μ°Ύλ λ¬Έμ μ
λλ€.
λ§μ½ μ£Όμ΄μ§ κ·μΉλ€μ λͺ¨λ μνν΄λ³΄κ³ λν 리μ μμΉλ₯Ό μ°Ύλ λΈλ£¨νΈ ν¬μ€
λ₯Ό μννλ€λ©΄
μ΅μ
μ κ²½μ° O(NK)
μ΄κΈ° λλ¬Έμ μκ° μ΄κ³Όκ° λ°μν©λλ€.
λμ μ μνκ³Ό ννμ μ€μ ν λ€ μ΄λΆ νμ
μ νμ©ν΄μ λ§μ§λ§ λν λ¦¬κ° μλ μμμ μμΉλ₯Ό μ°Ύλλ‘ νκ² μ΅λλ€.
κ°κ°μ μμΉμμ ν΄λΉ μ§μ μ΄ λ§μ§λ§ λν 리λΌλ μ¬μ€μ μ΄λ»κ² νλ¨ν μ μμκΉμ?
μ΄λ λ°λ‘ κ° κ·μΉμ λͺ¨λ μννλ©΄μ νΉμ μ§μ x
λ³΄λ€ μμ μλ λν 리μ κ°μλ₯Ό μΈμ΄μ£Όλ©΄ λ©λλ€.
κ° κ·μΉμ μμ μμΉλ₯Ό init
, κ°κ²©μ step
, κΈ°μ€ μ§μ μ x
λΌκ³ νλ€λ©΄ λ€μκ³Ό κ°μ λΆλ±μμ΄ μ±λ¦½ν©λλ€.
init + step * a <= x
μ¬κΈ°μ a
λ step
μ κ°μμ΄λ©° a + 1
μ΄ x
μ κ°κ±°λ μμ μμμ κ°μκ° λ©λλ€.
μ½λ
import sys
N, K, D = list(map(int, sys.stdin.readline().split()))
rules = [list(map(int, sys.stdin.readline().split())) for _ in range(K)]
def dotori(pivot):
total = 0
for start, end, step in rules:
beta = min(end, pivot)
if start <= beta:
calc = (beta - start) // step + 1
total += calc
return total
def solution():
lo, hi = 1, 1000000
ans = 0
while lo <= hi:
mid = (lo + hi) // 2
if dotori(mid) >= D:
ans = mid
hi = mid - 1
else:
lo = mid + 1
return ans
print(solution())
'π algorithm > boj' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ 2869 - λ¬ν½μ΄λ μ¬λΌκ°κ³ μΆλ€ (0) | 2021.04.13 |
---|---|
BOJ 16926 - λ°°μ΄ λ리기 1 (0) | 2021.04.13 |
BOJ 2178 - λ―Έλ‘ νμ (0) | 2021.03.18 |
BOJ 6593 - μλ² λΉλ© (0) | 2021.03.18 |
BOJ 16397 - νμΆ (0) | 2021.03.18 |
π¬ λκΈ