개미의 개열시미 프로그래밍

[알고리즘] 백준11047 동전 0 - 파이썬 본문

알고리즘/그리디 & 구현

[알고리즘] 백준11047 동전 0 - 파이썬

YunHyeok 2021. 8. 17. 15:56
728x90
반응형

이제 토익스피킹 시험도 봤고 결과가 어찌나오든 지금은 알고리즘 공부에 집중해야겠다..ㅜ 자꾸 하다 안 하다 하니 감이 떨어지는 듯.. 오늘은 그리디 문제를 볼 거고 단계별 풀기에서 쉬운 문제부터 정복하려고 한다!

 

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

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

 

[풀이 코드]

from sys import stdin

n, k = map(int, stdin.readline().split())

n_list = []
for _ in range(n):
    n_list.insert(0, int(input()))

count = 0
for i in n_list:
    if k >= i:
        count_i, k = divmod(k, i) # 튜플 형식으로 몫과 나머지를 반환
        count += count_i
        if k == 0:
            break

print(count)

 

[코드 해석]

문제는 이코테에서 비슷한 문제를 풀었기에 쉬운 편이었다.

 

- 10개의 동전을 입력받는 부분에서 배열에 정렬을 해주고 싶어서 insert를 썼었는데 그냥 정렬하는 함수나 for문을 돌 때 거꾸로 돌렸으면 됐었을 것 같지만 그냥 inset가 생각이 나서 썼다.

 

- 반복문에서는 k가 0이 될 때까지 배열에서 동전 값을 가져와 나눠주고 몫을 conut 변수에 더해주었다. 이 과정에서 divmod라는 것을 썼는데 이것도 예전에 써본 기억이 있어서 썼다. divmod는 몫과 나머지를 튜플로 반환을 해준다. 

728x90
반응형
Comments