Story of CowHacker

백준 11047번 동전0 본문

공부/백준

백준 11047번 동전0

Cow_Hacker 2020. 8. 31. 13:26
728x90

 

백준 동전 0이라는 문제를 풀어 봤다.

 

이 문제가 나한테는 설탕 배달 문제와 ATM문제가 섞인 느낌의 문제였다.

즉 앞에 두 문제를 이해하고 풀 수 있어야 하는 것 같았다.

 

 

coins, price = map(int,input().split())       # 동전 종류 수와 가격을 띄어쓰기 기준으로 각각 입력 받는다.
count = 0                                     # 구할려는 동전의 갯수다.
priceslist = []                               # 동전의 종류들을 담을 케이스다.
countlist = []                                # 구할려는 동전의 갯수를 담을 케이스다.
##############################################
for _ in range(coins):                        # 동전 종류수 를 기준으로한 for문을 생성한다.
    prices = list(map(int,input().split()))   # 동전 종류를 각각 입력 받는다.
    for _2 in prices:                         # 각각 입력받은 동전 종류를 기준으로 for문을 생성한다.
        priceslist.append(_2)                 # 각각 입력받은 동전 종류를 리스트에 담는다.
priceslist = list(reversed(priceslist))       # 동전 종류 리스트를 내림차순으로 정렬한다.
##############################################
while True:                                   # while문 무한루프를 생성한다.
    garb = price%priceslist[0]                # 가격에 동전 종류 리스트중 젤 큰 값을 나누기 한 나머지를 구한다.
    s = price // priceslist[0]                # 가격에 동전 종류 리스트중 젤 큰 값을 나누기한 몫을 구한다.

    if garb == 0 and s > 0:                   # 나머지가 0이고 몫이 0보다 클때 if문 진입을 하게 한다.
        counts2 = price//priceslist[0]        # 다시 가격에 동전 리스트중 젤 큰값을 나눈 몫을 구한다.
        print(sum(countlist) + counts2)       # 이 if 문에 들어오지 않았을때의 구할려는 동전갯수 리스트의 총합과 이 if 문에 있는 몫과 더한 값을 출력한다. 
        break                                 # whle문 무한루프를 종료한다.
    count = price//priceslist[0]              # 가격에 동전 종류 리스트중 젤 큰 값을 나눈 몫을 구한다.
    countlist.append(count)                   # 나눈 몫을 하나하나 리스트에 담는다.
    price = price - (s*priceslist[0])         # 가격 변동을 위해 처음에 구한 몫 곱하기 젤 큰 수를 한다음 가격에서 뺀다.
    del(priceslist[0])                        # 젤 큰 가격을 리스트에서 하나하나 제거해 나간다.

 

 

728x90

'공부 > 백준' 카테고리의 다른 글

백준 2217번 로프  (0) 2020.09.03
백준 5585번 거스름돈  (0) 2020.09.03
백준 11399번 ATM  (0) 2020.08.31
백준 2839번 설탕배달  (0) 2020.08.30
백준 1000번 A + B  (0) 2020.08.11
Comments