[JS/알고리즘] 백준 17212 : DP

2022. 1. 29. 22:28·Programming/Algorithm

문제

달나라 토끼들이 사용하는 화폐는 동전뿐이다. 동전의 종류는 1원, 2원, 5원, 7원 이렇게 4종류가 있다. 물건을 사고 동전으로 계산을 하는데 동전의 개수가 최소가 되도록 지불하지 않는 것은 불법이다. 예를 들어, 17원을 지불할 때 7원짜리 동전 1개와 5원짜리 동전 2개로 지불해야 합법이고, 7원짜리 동전 2개와 2원짜리 동전 1개, 1원짜리 동전 1개로 지불해도 17원이 되지만, 총 동전의 개수가 4개가 되어 최소 개수가 아니므로 불법이다.

지불 금액을 입력받아 합법이 되는 동전 개수를 출력으로 내어주는 프로그램을 작성해보자.

첫 번째 줄에 달나라 토끼가 지불해야하는 금액 N(0 ≤ N ≤ 100,000)이 주어진다.

첫 번째 줄에 달나라 토끼가 합법적으로 낼 수 있는 동전의 개수를 출력한다.

 

 

풀이

실버 난이도의 매우 간단한 문제이다. 다만, BFS로 접근하여 푸는 일이 없도록 해야한다.

탐욕으로 오해할 수 도 있지만 탐욕의 경우 큰 것 부터 가지고 오는 공식이 성립하지 않아 불가능하다.

저 난이도의 DP 유형을 보면 옵션 들이 주어지고 그 옵션 들로 목표하는 값을 채우는 형태의 문제가 많다.

 

점화식

dp[i] = Math.min(dp[i - 1], dp[i - 2], dp[i - 5], dp[i - 7]) + 1

 

 

해결 코드

let input = require("fs").readFileSync("/dev/stdin").toString().split("\n");

let n = +input[0];

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

for (let i = 8; i <= n; i++) {
  dp.push(Math.min(dp[i - 1], dp[i - 2], dp[i - 5], dp[i - 7]) + 1);
}
console.log(dp[n]);
저작자표시 비영리 변경금지 (새창열림)

'Programming > Algorithm' 카테고리의 다른 글

[JS/알고리즘] 백준 1890번 : DP  (1) 2022.01.30
[JS/알고리즘] 카카오 : 문자열 압축 (프로그래머스)  (0) 2021.12.21
[JS/알고리즘] 이분탐색 : 입국 심사 (프로그래머스)  (0) 2021.12.19
[JS/알고리즘] DP : N으로 표현 (프로그래머스)  (0) 2021.12.14
[JS/알고리즘] 탐욕 : 섬 연결하기 (프로그래머스)  (0) 2021.12.12
'Programming/Algorithm' 카테고리의 다른 글
  • [JS/알고리즘] 백준 1890번 : DP
  • [JS/알고리즘] 카카오 : 문자열 압축 (프로그래머스)
  • [JS/알고리즘] 이분탐색 : 입국 심사 (프로그래머스)
  • [JS/알고리즘] DP : N으로 표현 (프로그래머스)
박유상의 개발블로그
박유상의 개발블로그
개발블로그
  • 박유상의 개발블로그
    박유상의 개발블로그
    박유상의 개발블로그
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
    자바스크립트
    react
    Redux
    플러터
    useState
    github
    HTML
    useTranslation
    리액트
    탐욕법
    Firebase
    알고리즘
    useRef
    DP
    DART
    프로그래머스
    링고리
    JSON
    flutter web
    JavaScript
    Lingory
    Python
    map
    TypeScript
    웹
    CSS
    파이썬
    포트폴리오
    플러터 웹
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박유상의 개발블로그
[JS/알고리즘] 백준 17212 : DP
상단으로

티스토리툴바