[λ°±μ€€-17626] Four Squares / Python

πŸ“š Problem Solving/Baekjoon

https://www.acmicpc.net/problem/17626

 

17626번: Four Squares

λΌκ·Έλž‘μ£ΌλŠ” 1770년에 λͺ¨λ“  μžμ—°μˆ˜λŠ” λ„· ν˜Ήμ€ κ·Έ μ΄ν•˜μ˜ 제곱수의 ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€κ³  증λͺ…ν•˜μ˜€λ‹€. μ–΄λ–€ μžμ—°μˆ˜λŠ” 볡수의 λ°©λ²•μœΌλ‘œ ν‘œν˜„λœλ‹€. 예λ₯Ό λ“€λ©΄, 26은 52κ³Ό 12의 합이닀; λ˜ν•œ 42 + 32 + 1

www.acmicpc.net

n = int(input())
d = [0] * (n + 1)
d[0], d[1] = 0, 1

for i in range(2, n + 1):
    minValue = 1e9
    j = 1
    while (j ** 2) <= i:
        minValue = min(minValue, d[i - (j ** 2)])
        j += 1
    d[i] = minValue + 1

print(d[n])

 

ν•΄μ„€

DP λ¬Έμ œμ˜€λ‹€. λ¬Έμ œμ—μ„œ μ‚¬μš©λ˜λŠ” κ·œμΉ™μ„ λ°”λ‘œ 찾지 λͺ»ν•΄ κ½€λ‚˜ μ• λ₯Ό λ¨Ήμ—ˆλ‹€..😰

ꡬ글링을 톡해 λ¬Έμ œμ— μ‚¬μš©λ˜λŠ” κ·œμΉ™μ„ μ°Ύμ•˜λŠ”λ° 이 κ·œμΉ™μ„ μ•Œκ³ λ‚˜λ‹ˆ μ½”λ“œ κ΅¬ν˜„μ€ λ”±νžˆ 어렡지 μ•Šμ•˜λ‹€.

 

κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€.

- n보닀 μž‘κ±°λ‚˜ 같은 제곱수λ₯Ό μ°Ύκ³  n-제곱수λ₯Ό 인덱슀둜 가진 값에 1을 더해주면 λœλ‹€.

 >> d[i - (j**2)] + 1

 

λͺ¨λ“  DP λ¬Έμ œμ—μ„œ μ‚¬μš©λ˜λŠ” κ·œμΉ™λ“€μ„ λΉ λ₯΄κ²Œ μ°Ύμ•„λ‚΄μ•Ό ν•˜λŠ”λ°.. μ—°μŠ΅μ΄ 더 ν•„μš”ν•˜λ‹€!πŸ˜‚