Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- GPU #jtorch GPU #파이토치 병렬 #파이토치 GPU #pytorch gpu #multi process torch #horovod
- docker #cuda #docker container #도커 #도커 컨테이너 #쿠다 #cuda 11.3
- ssh #우분투 ssh #우분터 서버 #도커 #우분투 도커 #docker #cuda #우분투 개발환경 #딥러닝 #ubuntu docker #ubuntu cuda
- logistic regression
- cuda #centos #cuda삭제 #리눅스 #cenos cuda삭제
- GPU #cuda out of memory #gpu 메모리 #pytorch
- jupyter notebook #anaconda #vscode #pytorch #딥러닝 #deep learning #vscode server #서버 vscode #ssh vscode #vscode cuda
- BERT #구글BERT #BERT의정석
- 파이썬 #Python
- Machine Learning
- 구름
- 머신러닝
- 트랜스포머 #자연어처리 #딥러닝 #구글 #attention #self-attention #BERT #transformer #deeplearing
- docker #아나콘다 #anaconda #ubuntu anaconda #docker anaconda
- 깃허브 #우분투 #ubuntu #Github #깃허브 우분투 #깃헙 우분투 #깃헙
- docker #도커 #도커 컨테이너 #docker container #도커 우분투
- 백준
- docker #우분투 #ubuntu #도커 설치 #docker 설치 #docker installation #우분투 도커
- 백준 #알고리즘 #골드
- pytorch #cuda #우분투 torch #ubuntu pytorch #cuda torch #cuda pytorch
- 알고리즘 #levenshtein distance #편집거리 #edit distance
- 트랜스포머 #transformer #attention #self-attention #어텐션 #인공지능 #AI #딥러닝 #NLP #자연어처리
- 구름자연어처리과정
- pandas #folium #groupby #네이버부스트코스 #코칭스터디
Archives
- Today
- Total
바닥부터 시작하는 개발 공부
[알고리즘]백준 11047번: 동전 0 본문
728x90
알고리즘: 그리디 알고리즘
문제
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
출력
첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.
풀이
가능한 동전을 작게 사용하여 거스름돈을 주는 문제입니다.
가장 큰 액수의 동전을 먼저 사용해 액수를 채워주고 점차 작은 동전으로 거슬러줍니다.
사용가능한 동전의 종류를 내림차순으로 정렬을 해줍니다.
동전 중 총액보다 적은 액수의 동전만 거스름돈으로 사용할 수 있으므로
동전의 배열 coins에서 처음으로 거슬러줘야하는 돈보다 액수가 같거나 작은 동전이 나올 때의
인덱스를 기억해서 이를 통해 새 배열을 만들어줍니다
이 배열은 액수의 내림차순으로 정렬되어 있으므로,
하나씩 꺼내어 거슬러주며 남은 거스름 reamin을 업데이트 합니다.
이때, 거슬러준 동전의 갯수만큼 cnt를 추가해주면 됩니다
import sys
N, remain_ = map(int,input().split(" "))
#동전의 갯수와 거슬러줘야하는 돈을 받습니다
coins =[]
for i in range(N):
coins.append(int(input()))
coins = sorted(coins, reverse =True)
#동전의 액면가를 배열에 추가해줍니다.
stop =0
for coin in coins:
if coin<=remain:
stop=coins.index(coin)
break
#처음으로 액수가 거스름돈보다 작거나 같은 동전의 index를 받습니다
#아래에서 동전의 배열을 이를 통해 슬라이싱을 하는데
#거스름돈보다 액수가 적은 동전들로만 이루어진 배열을 구할 수 있습니다.
coins= coins[stop:]
i=0
sum_num_coins= 0
#동전을 하나씩 꺼내어보면서 최대한 많은 액수를 거슬러줍니다.
#액수가 큰 것 -> 작은 것으로 거슬러줍니다
#이 과정에서 사용한 동전의 갯수(거스름돈(remain)//사용한 동전의 액수(coin[i])를
#cnt에 업데이트 해줍니다
while sum_ != 0:
num_coins =remain//coins[i]
sum_=sum_-coins[i]*num_coins
i= i+1
sum_num_coins+=num_coins
print(sum_num_coins)
728x90
'Algorithm > 백준' 카테고리의 다른 글
[알고리즘]백준 1193번: 분수찾기 (0) | 2023.02.06 |
---|---|
[알고리즘]백준 11723번: 집합 (0) | 2023.02.06 |
[알고리즘]백준 11399번: ATM (0) | 2023.02.05 |
[알고리즘]백준 1966번: 프린터 큐 (0) | 2023.02.05 |
[알고리즘]백준 10773번: 제로 (0) | 2023.02.04 |
Comments