반응형
https://www.acmicpc.net/problem/14606
import math
n = int(input())
t = [0 for _ in range(n+1)]
t[1] = 0
for i in range(2,n+1):
t[i] = math.ceil(i/2)*(i-math.ceil(i/2)) + t[math.ceil(i/2)] + t[i-math.ceil(i/2)]
print(t[n])
처음엔 이게 왜 dp인가 싶었는데 식을 구하려고 그림을 그려보니 완전 dp구나 싶었습니다. 피보나치 문제 풀 때랑 거의 같지만 딱 하나 다른 점은 나눴을 때의 높이를 서로 곱해줘야 한다는 점이네요. n이 10까지밖에 없기 때문에 저는 그냥 했지만 저렇게 여러번 ceil을 사용한다면 미리 앞에서 변수 선언을 해주고 해당 변수를 사용하는 쪽이 좀 더 경제적일 겁니다.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]11399번 풀이 (0) | 2022.06.06 |
---|---|
[BOJ][Python]12865번 풀이 (0) | 2022.06.05 |
[BOJ][Python]11047번 풀이 (0) | 2022.06.05 |
[BOJ][Python]15489번 풀이 (0) | 2022.06.04 |