Java

[백준 1398] 동전 문제 (JAVA)

iheeeee6-6 2023. 6. 27. 00:46
728x90

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

 

1398번: 동전 문제

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 둘째 줄부터 T개의 줄에 초콜릿의 가격이 주어진다. 가격의 1015보다 작거나 같은 자연수이다.

www.acmicpc.net

 

1         10           25 

100     1000       2500

10000 1000000 250000

 

이렇게 100을 곱한 값으로 나눌 수 있다.

사이즈가 100인 dp 배열을 만들어, 해당 인덱스의 값일 경우 지불해야 하는 동전의 개수를 세팅해놓는다.

dp[input 값에 %100한 값] 을 모두 더하면 필요한 동전의 개수가 나온다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		int[] dp= new int[100];
		for(int i=0;i<100;i++) {
			if(i>=25) {
				dp[i]=Math.min(dp[i-25]+1, dp[i-10]+1);
				dp[i]=Math.min(dp[i],dp[i-1]+1);
			}else if(i>=10) {
				dp[i]=Math.min(dp[i-10]+1, dp[i-1]+1);
			}else {
				dp[i]=i;
			}
		}
		
		for (int i = 0; i < n; i++) {
			Long num = Long.parseLong(br.readLine());
			//1   100
			//10  1000
			//25  2500
			int result=0;
			while(num>0) {
				result+=dp[(int) (num%100)];
				num/=100;
			}
			System.out.println(result);
		}
	}

}

'Java' 카테고리의 다른 글

[백준 1947] 선물 전달 (JAVA)  (0) 2023.07.11
[백준 2157] 여행 (JAVA)  (0) 2023.07.11
[백준 17609] 회문 (JAVA)  (0) 2023.06.21
[백준 2258] 정육점 (JAVA)  (0) 2023.06.20
[백준 4716] 풍선 (JAVA)  (0) 2023.06.14