greedy - 거스름돈

changi123·2024년 3월 1일
0
post-thumbnail

내 코드

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 알고리즘은 탐욕법이다. "현재 상황에서 지금 당장 좋은 것만 고르는 방법" 최대한의 효율적으로 좋은 방법을 찾자

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보