본문 바로가기

BOJ/다이나믹 프로그래밍

BOJ : 14606 피자 (JS)

728x90

소스코드

let fs = require('fs');
const filePath = process.platform === `linux` ? `/dev/stdin` : `예제.txt`; 
let input = fs.readFileSync(filePath).toString().split(' ');
const c = console.log

let n = (Number(input[0]))

let dp = []
dp[1] = 0
dp[2] = 1

for(let i = 3 ; i < 11 ; i++){
    dp[i] = i-1 + dp[i-1]
}

c(dp[n])

 

풀이

우선 1과 2는 0과 1로 값을 할당해 주었다.

 

값을 최대로 얻기 위해서 n층의 높이를 n-1로 계속해서 쌓는 방식을 이용해야 하는데,

만약 5층의 피자탑이 있으면 4 1 / 3 1 1 / 2 1 1 1 / 1 1 1 1 1 로 피자탑을 쌓아야하는 규칙을 얻어내어

점화식을 작성해 풀었다.

 

문제

https://www.acmicpc.net/problem/14606

 

14606번: 피자 (Small)

예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작

www.acmicpc.net

 

 

728x90

'BOJ > 다이나믹 프로그래밍' 카테고리의 다른 글

BOJ : 2293 동전1 (파이썬 + 자바스크립트)  (0) 2023.01.17
BOJ : 2565 전깃줄(JS)  (0) 2023.01.15
BOJ : 11048 이동하기 (JS)  (0) 2023.01.14
BOJ : 12865 평범한 배낭 (JS)  (0) 2023.01.09
BOJ : 9625 BABBA (JS)  (0) 2023.01.07