14606번: 피자 (Small)
예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작
www.acmicpc.net
입력이 10까지 밖에 없습니다. 간단한 문제입니다.
채점시 방법은 보지 않고 출력 결과만 보기 때문에, 이처럼 간단한 문제는 결과를 직접 배열에 저장해놓고 입력에 따라 출력하는 방법을 쓸 수도 있겠습니다.
[코드 보기]
더보기
#include <iostream>
using namespace std;
int main()
{
int n;
int dp[100] = { 0,0,1,3,6,10};
cin >> n;
for (int i = 6; i <= 10; i++)
{
int left = i / 2, right = i - left;
int memorize = left * right;
memorize += dp[left] + dp[right];
dp[i] = memorize;
}
cout << dp[n];
return 0;
}
[설명 보기]
더보기
1층 피자탑의 즐거움은 0입니다.
2층 피자탑의 즐거움은 1입니다.
3층 피자탑의 즐거움은 3입니다.
4층 피자탑은, 1+3의 피자탑으로 나눌 수 있고, 이때의 즐거움은 1*3=3입니다. 3층의 피자탑을 나누려고 봤더니.. 우리는 이미 3층 피자탑의 최대 즐거움을 알고 있습니다. 3에다가 3층 피자탑의 즐거움을 더해줍니다.
나머지에 대해서도 같은 과정을 반복합니다.
'Koala - 2기 > C반' 카테고리의 다른 글
[BOJ] 2011번. 암호코드 (0) | 2021.01.24 |
---|---|
[BOJ] 11057번. 오르막 수 (0) | 2021.01.22 |
[BOJ] 1010번. 다리 놓기 (0) | 2021.01.21 |
[25411633] 2×n 타일링 - 20200118(3) (0) | 2021.01.18 |
[13301] 타일 장식물 - 20200118(2) (0) | 2021.01.18 |