https://www.acmicpc.net/problem/11047
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이 될 때까지 반복합니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 11050번] 이항 계수 1(JAVA) (0) | 2020.08.10 |
---|---|
[BOJ 1931번] 회의실 배정(JAVA) (0) | 2020.08.08 |
[BOJ 12865번] 평범한 배낭(JAVA) (0) | 2020.08.08 |
[BOJ 2565번] 전깃줄(JAVA) (0) | 2020.08.05 |
[BOJ 11053번] 가장 긴 증가하는 부분 수열(JAVA) (0) | 2020.08.05 |