일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이펙티브자바
- 코테
- springboot
- 피보나치
- 그리디알고리즘
- 정렬
- Database
- Greedy
- 데이터베이스
- mybatis
- Spring
- 탐욕법
- select
- join
- 프로그래머스
- 백준
- SQL
- 깊이우선탐색
- mariaDB
- 다이나믹프로그래밍
- db
- 너비우선탐색
- 우선순위큐
- DFS
- IntelliJ
- BFS
- Effective Java
- java
- 알고리즘
- DP
Archives
- Today
- Total
땀두 블로그
탐욕법 - 거스름돈 알고리즘, 동전교환 알고리즘 본문
탐욕법의 가장 대표적인 알고리즘으로 문제에 필요한 금액이 입력되면 가지고 있는 동전의 조합으로 해결하는 문제이다. 주어진 숫자 N을 충족하기 위해 동전의 배열에서 가장 큰 값부터 조건에 만족하면 추가하는 식으로 문제를 해결한다.
public class coinChange {
public static void main(String[] args) {
// TODO Auto-generated method stub
int N = 164;
int ary[] = { 1, 5, 10, 50 };
int cnt = 0;
for (int i = ary.length - 1; i >= 0; i--) {
while (N > 0) {
if (N >= ary[i]) {
N -= ary[i];
cnt++;
} else {
break;
}
}
}
System.out.println(cnt);// 코인의 개수
int n = 164;
int ary1[][] = { { 1, 0 }, { 5, 0 }, { 10, 0 }, { 50, 0 } };
for (int i = ary1.length - 1; i >= 0; i--) {
while (n > 0) {
if (n >= ary1[i][0]) {
n -= ary1[i][0];
ary1[i][1]++;
} else {
break;
}
}
}
for (int i = 0; i < ary1.length; i++) {
System.out.println(ary1[i][1]);//각각의 코인의 개수
}
}
}
'알고리즘' 카테고리의 다른 글
DFS 개념 (0) | 2022.03.22 |
---|---|
BFS 개념 (0) | 2022.03.22 |
기본 알고리즘 (0) | 2022.03.22 |
탐욕법 - 활동 선택 문제(Activity Selection Problem) (0) | 2022.03.21 |
[백준] 1654번 - 랜선 자르기 (0) | 2022.03.20 |
Comments