[백준] 14916 - 거스름돈

2020. 11. 6. 20:02·🧇 Algorithm/백준
728x90

문제 ( www.acmicpc.net/problem/14916 )

춘향이는 편의점 카운터에서 일한다.

손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.

예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.

 

입력

첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.

 

출력

거스름돈 동전의 최소 개수를 출력한다. 만약 거슬러 줄 수 없으면 -1을 출력한다.

 

예제

13

5

 

14

4

 

나의 코드

import sys
sys.setrecursionlimit(1000000)


def dp(n):
    if n == 0: return mem[n]
    if n < 0: return 100001  # return max

    res = mem[n]
    if res != -1:  # already calculated
        return res

    mem[n] = 100001  # initiate as max
    res = min(mem[n], dp(n - 5) + 1)  # coin 5
    res = min(res, dp(n - 2) + 1)  # coin 2

    return res


n = int(input())
mem = [-1 for i in range(100001)]  # memoization
result = dp(n)
if result > 100000:  # can't change
    print(-1)
else:
    print(result + 1)
  • memoization 구현 → 이미 계산된 값을 return하여 시간 단축!
  • mem배열 크기를 n으로 해도 될 듯
  • min함수를 사용하여 100001, 5원, 2원의 경우 중 가장 작은 값을 return하여 최소값을 찾다.
  • 백준이 파이썬 재귀 횟수를 제한하므로 이를 풀어주기 위해 가장 위 2줄 코드를 추가

 

💫 이 방법이 아니라 그냥 반복문으로 하면 훨씬 간단하게 해결 가능

728x90

'🧇 Algorithm > 백준' 카테고리의 다른 글

[백준] 1316 - 그룹 단어 체커  (0) 2021.01.08
[백준] 1753 - 최단경로  (0) 2021.01.02
[백준] 20528 - 끝말잇기: Good Bye, BOJ 2020! A  (0) 2021.01.02
[백준] 1436 - 영화감독 숌  (0) 2020.10.31
[백준] 1018 - 체스판 다시 칠하기  (0) 2020.10.10
'🧇 Algorithm/백준' 카테고리의 다른 글
  • [백준] 1753 - 최단경로
  • [백준] 20528 - 끝말잇기: Good Bye, BOJ 2020! A
  • [백준] 1436 - 영화감독 숌
  • [백준] 1018 - 체스판 다시 칠하기
soyang.
soyang.
AI/Agent/개발 지식 Archive.
  • soyang.
    소소한 코딩일지
    soyang.
  • 전체
    오늘
    어제
  • 링크

    • Github 🐾
    • 포트폴리오 📓 (리뉴얼중)
    • LinkedIn 👩🏻‍💼
  • 공지사항

    • 소소한 코딩일지
  • 블로그 메뉴

    • 방명록
    • 분류 전체보기 (181)
      • 🚩 목표 & 회고 (9)
      • 📓 Papers (10)
      • 🧇 Algorithm (44)
        • 이론 (1)
        • LeetCode (2)
        • 프로그래머스 (30)
        • 백준 (11)
      • 💻 Study (47)
        • 🤖 AI 인공지능 (3)
        • Python 파이썬 (3)
        • Docker 도커 (4)
        • 웹 (20)
        • 안드로이드 (2)
        • JAVA 자바 (1)
        • Firebase (3)
        • Linux 리눅스 (10)
      • 🍪 Projects (2)
      • 🎒 학교 (44)
        • 대학원 도비 (2)
        • 21 동계 모각코: 슈붕팥붕 (13)
        • 21 하계 모각코: 와팬호 (13)
        • 20 동계 모각코: 와팬호 (13)
      • 활동들 (16)
        • 인프런 대학생 LEAF 2기 (9)
        • 2021 Silicon Valley Online .. (7)
  • 태그

    인프런대학생Leaf
    노마드코더
    Python
    Ai
    Artificial Intelligence
    모각코
    Algorithm
    알고리즘
    프로그래머스
    목표
    알고리즘스터디
    공부
    Linux
    programmers
    React
    백준
    Gentoo
    error
    리액트
    코딩테스트
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
soyang.
[백준] 14916 - 거스름돈
상단으로

티스토리툴바