[Python] 백준 #14916- 거스름돈

2023. 8. 23. 00:20·코딩테스트/백준[Python]

문제


 

14916번: 거스름돈

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

www.acmicpc.net

코드


My answer

charge=int(input())

answer=0
for i in range(charge//5,0,-1):
    if((charge-(5*i))%2==0):
        answer=i+(charge-(5*i))//2
        break
if(answer==0):
    if(charge%2==0):answer=charge//2
    else:answer=-1

print(answer)
import sys
input=sys.stdin.readline

n=int(input())

dp=[0,0,1,0,2,1]+[0 for _ in range(n+1)]

for i in range(6,n+1):
    if(dp[i-5]!=0 and dp[i-2]!=0):
        dp[i]=min(dp[i-2]+1,dp[i-5]+1)
    elif(dp[i-5]==0):
        dp[i]=dp[i-2]+1
    else:
        dp[i]=dp[i-5]+1
if(dp[n]==0):print(-1)
else:print(dp[n])

Another answer

n = int(input())
dp = [-1]*(n+1)
dp[0] = 0
for i in range(1, n+1):
    if i >= 2 and dp[i-2] > -1:
        dp[i] = (dp[i-2]+1) if dp[i] == -1 else min(dp[i-2]+1, dp[i])
    if i >= 5 and dp[i-5] > -1:
        dp[i] = (dp[i-5]+1) if dp[i] == -1 else min(dp[i-5]+1, dp[i])
print(dp[n])
import sys 
input=sys.stdin.readline 

n = int(input()) 
num = n%5 
count = 0 
if n==1 or n==3 : 
    print(-1)
elif num%2==0 : 
    print(n//5 + num//2)
else :
    print((n//5)-1 + (num+5)//2)
exit(0)

풀이


내 풀이 1: 그리디 방식 해결 5와 2로 구성되야 하므로,

1. 5로 나눠지고 2로 나눠떨어지지 않으면 패스, 5로 나눠지고 2로 나눠 떨질떄만 이후 진행 

-> 5로 나눴을 때의 몫, 5로 나눈 나머지를 2로 나눴을 때의 몫

2. 5로 안나눠졌거나, 5로 나눠졌는데 나머지가 2로 나눠지지 않을 경우 

-> 전부 2로 나누거나, 반환 불가 

 

내 풀이 2번: 동적계획법으로 해결(추후 수정)

 

다른 풀이 1번: 동적계획법으로 해결(추후 수정)

 

다른 풀이 2번: n이 1이거나 3인 경우를 제외하고는 모두 2와 5로 만들 수 있음. 이 두 경우만 제외하고 나머지는 위와 동일한 방식

중요한 건 1,3을 제외하고는 모두 구성할 수 있기 때문에 5로 나눠지고, 2로 나눠떨어지지 않는 경우 5로 나눈 몫에서 1을 빼주고, 원래 5로 나눴던 나머지(2로 나눠떨어지지 않는 홀수)에다가 5를 더해주면 반드시 2로 나눠짐.

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python] 백준 #2217- 로프  (0) 2023.08.23
[Python] 백준 #2828 - 사과 담기 게임  (0) 2023.08.23
[Python] 백준 #1343- 폴리오미노  (0) 2023.08.23
[Python] 백준 #15724 - 주지수[try_again]-ing  (0) 2022.03.02
[Python] 백준 #18115 - 카드 놓기[try_again]  (0) 2022.03.02
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python] 백준 #2217- 로프
  • [Python] 백준 #2828 - 사과 담기 게임
  • [Python] 백준 #1343- 폴리오미노
  • [Python] 백준 #15724 - 주지수[try_again]-ing
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    DFS
    이분탐색
    백준
    나동빈
    dp
    이코테
    BFS
    그리디
    이것이취업을위한코딩테스트다
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바