본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 14606/javascript] 피자

by tokkiC 2022. 9. 29.

1부터 경우의 수를 세보면

1일때 0

2일때 1

3일때 3

4일때 6

임을 알 수 있다

위 결과와 n개일 때 n-1 개와 1개로 나눌때를 생각해보면

n-1 개도 각각 나눠질수 있다는걸 생각하면

f(n) = (n - 1) + f(n - 1) 라는 점화식을 찾을 수 있다

결과를 배열에 아래서부터 넣어주면 된다

다이나믹 프로그래밍 문제이다

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

 

14606번: 피자 (Small)

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

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  let n = Number(inp[0]);
  let arr = Array(14).fill(0);
  arr[1] = 0;
  arr[2] = 1;
  arr[3] = 3;
  for (let i = 4; i <= 10; i++) {
    arr[i] = i - 1 + arr[i - 1];
  }
  console.log(arr[n]);
};

댓글