본문 바로가기
Problem Solving/BOJ

[BOJ][Python]14606번 풀이

by NoiB 2022. 6. 5.
반응형

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을 사용한다면 미리 앞에서 변수 선언을 해주고 해당 변수를 사용하는 쪽이 좀 더 경제적일 겁니다.

반응형

'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