Problem Solving/BOJ
[BOJ][Python]14606번 풀이
NoiB
2022. 6. 5. 17:18
반응형
https://www.acmicpc.net/problem/14606
14606번: 피자 (Small)
예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작
www.acmicpc.net
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을 사용한다면 미리 앞에서 변수 선언을 해주고 해당 변수를 사용하는 쪽이 좀 더 경제적일 겁니다.
반응형