그리디 알고리즘 예제 - 1
Last updated
Last updated
n(동전 개수) k(목표 금액)
list(동전 데이터 리스트)
for n 반복:
list 데이터 저장
for n (n-1 ~ 0): # 역순
if 현재 k보다 동전 가치가 작거나 같으면:
동전 수 += 목표 금액 / 현재 동전 가치
목표 금액 = 목표 금액 % 현재 동전 가치
누적된 동전 개수 출력n, k = map(int, input().split())
list = [0] * n
for i in range(n):
list[i] = int(input())
count = 0
for i in range(n - 1, -1, -1):
if k >= list[i]:
count += int(k / list[i])
k = k % list[i]
print(count)from queue import PriorityQueue
myque = PriorityQueue() # 우선순위 큐 생성
# 기본 함수
put(data) # 원소 추가
get() # 큐에서 데이터 꺼내기
qsize() # 큐 사이즈 가져오기
empty() # 큐가 비어 있는지 확인import heapq
mylist = [] # 리스트 생성
heapq.heappush(mylist, 1) # 리스트에 데이터를 넣을 때 heapq를 이용하여 저장
# 기본 함수
heappush(mylist, data) # data를 list(heap 자료구조) 형태로 저장
heappop(mylist) # list(heap 자료구조)에서 데이터 꺼내기
heapify(mylist) # 일반적인 list를 heap 자료구조로 변환 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
int count = 0;
for (int i = n - 1; i >= 0 ; i--) {
if (k >= arr[i]) {
count += k / arr[i];
k %= arr[i];
}
}
System.out.println(count);
}
}