www.acmicpc.net/problem/5585

 

5585번: 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사

www.acmicpc.net

 

이 문제를 위한 나의 해결법은

1. 500엔으로 나눈 몫 나머지를 구하고

2. 500엔으로 나눈 나머지를 100엔으로 위와 마찬가지로 구한다.

10엔 5엔 도 마찬가지로 구하고 1엔때의 몫을 구한다.

 

package test;

import java.util.Scanner;

public class test {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int n = sc.nextInt();
		
		int coin[] = {500,100,50,10,5,1};
		int sum =0;
		int nam =1000-n;
		
		for(int i =0;i<6;i++) {
			sum += nam/coin[i];
			if(n%coin[i]!=0) {
				nam = nam%coin[i];
			}
			else {
				break;
			}
		}
		System.out.println(sum);
	}
}

 

이 문제를 보고 일단 coin 배열에 동전에 유형들을 넣고

for문을 이용하여 최대한 짧게 구현하였다. 문제를 잘못이해하여 1000엔을 주고 나머지를 구해야하는데 입력값 그대로를 나눠버려서 살짝 착오가 생겼지만 문제를 다시한번 읽어보니 nam값을 1000에서 초기값을 빼서 계산했다!

 

그랬더니 정답!!

다른사람들이 짠 코드를 보며 나와다른점이 무엇일까 생각해보기로했다!

'알고리즘 with 자바 > 그리디' 카테고리의 다른 글

백준 2217 : 로프 - JAVA  (0) 2021.03.17
백준 1541 : 잃어버린 괄호 - JAVA  (0) 2021.03.16
백준 11047 : 동전 0 - JAVA  (0) 2021.02.16
백준 11399 : ATM - JAVA  (0) 2021.02.16
백준 2839 : 설탕배달 - JAVA  (0) 2021.02.16

+ Recent posts