[백준/Python] 11047. 동전 0

2024. 11. 18. 16:44·코딩테스트/BAEKJOON
728x90
반응형

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

 

 

풀이 

 

동전 구하기는 그리디 알고리즘에서 유명한 문제이다. 

 

해당 문제에서 내림차순으로 정렬해 나누기를 반복했을 때 정답이 될 수 있는 이유는 arr 값들끼리 배수의 관계에 있기 때문이다. 

 

만약 arr = [100, 400, 500, 100] 인데, 800원을 만들 수 있는 동전의 최소 개수는 

아래의 코드 기반으로 하면 4개가 된다. (500원 1개, 100원 3개) 

하지만 이론 상으로는 400원 2개로 끝이 난다. 

 

따라서, 그리디 문제를 풀 때는 

1. 완전탐색을 고민해보고 

2. 반례가 없는지 꼭 확인해봐야 한다. 

 

N, K = map(int, input().split())

arr = []
for _ in range(N):
    arr.append(int(input()))
arr.sort(reverse=True)
ans = 0
for val in arr:
    if K == 0:
        break
    if K < val:
        continue
    else:
        ans = ans + K // val
        K = K % val
print(ans)
728x90
반응형
저작자표시 비영리 변경금지

'코딩테스트 > BAEKJOON' 카테고리의 다른 글

[백준/Python] 1003. 피보나치 함수  (0) 2024.11.18
[백준/Python] 17219. 비밀번호 찾기  (0) 2024.11.18
[백준/Python] 11399. ATM  (0) 2024.11.18
[백준/Python] 1764. 듣보잡  (0) 2024.11.18
[백준/Python] 9012. 괄호  (1) 2024.11.05
'코딩테스트/BAEKJOON' 카테고리의 다른 글
  • [백준/Python] 1003. 피보나치 함수
  • [백준/Python] 17219. 비밀번호 찾기
  • [백준/Python] 11399. ATM
  • [백준/Python] 1764. 듣보잡
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[백준/Python] 11047. 동전 0
상단으로

티스토리툴바