[BaekJoon] λ°±μ€€ 17626번 : Four Squares

Updated:

17626번 : Four Squares

μŠ€ν¬λ¦°μƒ· 2020-10-07 μ˜€ν›„ 12 19 32


DP 와 브루트포슀λ₯Ό μ΄μš©ν•˜λ©΄ λ˜λŠ” λ¬Έμ œμ΄λ‹€.

num = 1 + dp[pivot^2 - num] 을 톡해 ꡬ할 수 μžˆλ‹€. pivot 은 1λΆ€ν„° pivot**2 κ°€ num μ΄ν•˜ 일 λ•Œ κΉŒμ§€ 1μ”© μ¦κ°€ν•œλ‹€.

λ§Œμ•½ 32λ₯Ό κ΅¬ν•˜κ³  싢은 경우

1 + dp[31]

1 + dp[28]

1 + dp[23]

1 + dp[16]

1 + dp[7] λ₯Ό 계산해 κ°€μž₯ μž‘μ€ 값을 dp[32] 에 λ„£μ–΄μ£Όλ©΄ λœλ‹€.


def solution(num):
	dp = [0, 1, 2, 3, 2]

	for i in range(5, num + 1):
		pivot = 1
		tmp = 1_000_000
		while pivot ** 2 <= i:
			if 1 + dp[i - pivot ** 2] < tmp:
				tmp = 1 + dp[i - pivot ** 2]
			pivot += 1
		dp.append(tmp)

	return dp[num]


print(solution(int(input())))



Categories:

Updated:

Leave a comment