λ¬Έμ μ€λͺ
Finnμ μμ¦ μν곡λΆμ λΉ μ Έ μμ΅λλ€. μν 곡λΆλ₯Ό νλ Finnμ μμ°μ nμ μ°μν μμ°μλ€λ‘ νν νλ λ°©λ²μ΄ μ¬λ¬κ°λΌλ μ¬μ€μ μκ² λμμ΅λλ€.
μλ₯Ό λ€μ΄ 15λ λ€μκ³Ό κ°μ΄ 4κ°μ§λ‘ νν ν μ μμ΅λλ€.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
μμ°μ nμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ°μλ μμ°μλ€λ‘ nμ νννλ λ°©λ²μ μλ₯Ό returnνλ solutionλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- nμ 10,000 μ΄νμ μμ°μ μ λλ€.
μ μΆλ ₯ μ
n | reseult |
15 | 4 |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ#1
λ¬Έμ μ μμμ κ°μ΅λλ€.
νμ΄ μ½λ
def solution(n):
answer = 0
for i in range(1, n+1):
sum_val = 0
for j in range(i, n+1):
sum_val += j
if sum_val == n:
answer += 1
elif sum_val > n:
break
return answer
λΈλ£¨νΈν¬μ€ (brute force, μμ νμ) λ¬Έμ μ΄λ€.
μ²μμλ dp λ¬Έμ μΈ μ€ μκ³ μ νμ κ·μΉμ μ΄λμ΄ λ΄λ €κ³ νμΌλ, λλ¬΄μ§ κ·μΉμ μκ°ν΄λ΄λ λμ€μ§ μμ μμ νμμΌλ‘ μ κ·Όνλ€.
n <= 10000 μ΄νμ μμ°μ μ΄λ―λ‘, O(N^2)μ μκ°λ³΅μ‘λ λ‘μ§μ ꡬμ±ν΄λ λ κ²μ΄λΌ νλ¨νλ€.
λ¨Όμ 1λΆν° μ°μλ μ«μμ ν©μ ꡬνλ€.
1, 1+2, 1+2+3, ... μ κ°μ κ·μΉμΌλ‘ ν©μ κ³μν΄μ ꡬνκ³ , λ§μ½ μ΄ ν©μ΄ 'κ°κ² λ§λ€κ³ μ νλ κ°'λ³΄λ€ ν¬λ€λ©΄ λ μ΄μ λν΄μ€ νμκ° μμΌλ―λ‘ breakλ₯Ό κ±Έμλ€.
κ·Έ λ€μμ 2λΆν° μ°μλ μ«μ, 3λΆν° μ°μλ μ«μμ ν¨ν΄μΌλ‘ μμ νμμ μ§ννλ€.
κΈ°λ³Έμ μΌλ‘ 2μ€ forλ¬ΈμΌλ‘ ꡬμ±λμ΄μμΌλ―λ‘, forλ¬Έ λ΄μ λ‘μ§μ O(N) μ΄μμΈ μ½λκ° λ€μ΄κ°λ©΄ ν¨μ¨μ±μμ νλ½ν κ²μ΄λ―λ‘ μ΄ μ μ μ μν΄μ λ‘μ§μ ꡬμ±νμ.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ€μ ν° μ«μ (level2, python) (0) | 2022.09.08 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] νΌλ³΄λμΉ μ (level2, python) (0) | 2022.09.08 |
[νλ‘κ·Έλλ¨Έμ€] μ¬λ°λ₯Έ κ΄νΈ (level2, python) (0) | 2022.09.08 |
[νλ‘κ·Έλλ¨Έμ€] μ΅μκ° λ§λ€κΈ° (level2, python) (0) | 2022.09.08 |
[νλ‘κ·Έλλ¨Έμ€] μ΄μ§ λ³ν λ°λ³΅νκΈ° (level2, python) (0) | 2022.09.08 |