본문 바로가기
프로그래밍 문제/BOJ(백준 온라인 저지)

[BOJ 11047번] 동전 0(JAVA)

by 테크케찰 2020. 8. 8.

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

import java.util.*;
import java.io.*;

public class Main {
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
	static StringBuilder sb=new StringBuilder();
	static int[] money;
	
	public static void main(String args[]) throws Exception {
		String s[]=br.readLine().split(" ");
		int n=Integer.parseInt(s[0]);
		int k=Integer.parseInt(s[1]);
		money=new int[n];
		for(int i=0;i<n;i++) {
			money[i]=Integer.parseInt(br.readLine());
		}
		int cnt=0;
		for(int i=n-1;i>=0;i--) {
			if(k>=money[i]) {
				int temp=k/money[i];
				cnt+=temp;
				k%=money[i];
				if(k==0) break;
			}
		}
		System.out.println(cnt);
	}
}

동전의 가치를 money 배열에 오름차순으로저장합니다.

최종값을 저장할 변수인 cnt 변수를 선언합니다.

이후 k 값을 입력받고, for문을 통해 동전의 가치가 높은 가치부터 k를 동전의 가치로 나누고 이를 cnt에 더합니다.

이후 k%=money[i] 문장을 통해 k 값을 현재 동전의 가치로 나눈 나머지를 k에 저장하고 k가 0이 될 때까지 반복합니다.