import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
int N = 1260 ; // 초기 남은돈
// 거스름돈의 종류 500 , 100, 50, 10
int[] money = {500, 100, 50, 10};
int cnt = 0 ; // 최소 개수 answer
for(int i = 0 ; i < money.length; i++) {
int coin = money[i];
while(true) {
if( N >= coin) {
N = N-coin;
cnt++;
}else {
break;
}
}
}
System.out.println(cnt);
}
}
(1) 큰 거스름돈보다 거슬러줘야할 돈이 크다면 계속해서 반복되도록 했다.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
int n = 1260;
int cnt = 0;
int[] coinTypes = {500, 100, 50, 10};
for (int i = 0; i < 4; i++) {
int coin = coinTypes[i];
cnt += n / coin;
n %= coin;
}
System.out.println(cnt);
}
}
(1) 난 각 거스름돈을 계속해서 걸러줬다. 솔루션을 보니 / 연산자로 while문 과정을 생략할 수 있고 남은 금액 또한 % 연사자를 써서 해결할 수 있다. greedy 알고리즘은 탐욕법이다. "현재 상황에서 지금 당장 좋은 것만 고르는 방법" 최대한의 효율적으로 좋은 방법을 찾자