From 3510d071df6afcc59fe3531101befc8d1bbc3d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=99=E9=8D=8B=20=E5=B0=9A=E8=BC=9D?= Date: Tue, 1 Jul 2025 16:01:54 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=80=9Cpaiza=E3=81=AE=E5=95=8F=E9=A1=8CC1?= =?UTF-8?q?66=E3=81=AE=E5=9B=9E=E7=AD=94=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ntakanabe/src/CoinPayment.java | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ntakanabe/src/CoinPayment.java diff --git a/ntakanabe/src/CoinPayment.java b/ntakanabe/src/CoinPayment.java new file mode 100644 index 0000000..9410cc1 --- /dev/null +++ b/ntakanabe/src/CoinPayment.java @@ -0,0 +1,35 @@ +package paiza.src; + +import java.util.Scanner; + +/** + * . C166 硬貨の支払いに必要な最低枚数を調べるクラス + * + * @author ntakanabe + */ + +public class CoinPayment { + /** . 入力値(購入金額)に対して最適な必要枚数を出力するmain関数 */ + public static void main(final String[] args) { + + final Scanner sc = new Scanner(System.in); + int price = sc.nextInt(); + + int totalCoinsCount = 0; + + final int[] coins = { + 500, 100, 50, 10, 5, 1 + }; + + // 金額の高い硬貨から順に購入金額を割っていき、カウント + for (int i = 0; i < coins.length; i++) { + final int numCoins = price / coins[i]; + totalCoinsCount += numCoins; + price %= coins[i]; + } + + System.out.println(totalCoinsCount); + + sc.close(); + } +} -- GitLab From 2d893fc183bac30a3867de21e9f20f1e17d40430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=99=E9=8D=8B=20=E5=B0=9A=E8=BC=9D?= Date: Wed, 2 Jul 2025 13:37:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=80=9Cpaiza=E3=81=AE=E5=95=8F=E9=A1=8CC1?= =?UTF-8?q?66=E3=82=92=E4=BF=AE=E6=AD=A3=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ntakanabe/src/CoinPayment.java | 48 +++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/ntakanabe/src/CoinPayment.java b/ntakanabe/src/CoinPayment.java index 9410cc1..1667f5b 100644 --- a/ntakanabe/src/CoinPayment.java +++ b/ntakanabe/src/CoinPayment.java @@ -9,27 +9,63 @@ import java.util.Scanner; */ public class CoinPayment { - /** . 入力値(購入金額)に対して最適な必要枚数を出力するmain関数 */ + + /** + * . 入力メソッド、最低硬貨枚数の計算メソッド、出力メソッドの呼び出しを行うmainメソッド + */ public static void main(final String[] args) { + final int price = getInputPrice(); + final int totalCoinsCount = calculateMinCoins(price); + displayResult(totalCoinsCount); + } + + /** + * . 標準入力から購入金額を取得するメソッド + * + * @return 入力された購入金額 + */ + private static int getInputPrice() { + final Scanner sc = new Scanner(System.in); - int price = sc.nextInt(); + final int price = sc.nextInt(); + sc.close(); + + return price; + } + + /** + * . 入力された金額を支払うために必要な硬貨の最低枚数を計算するメソッド + * + * @param price 購入金額 + * @return 支払いに必要な硬貨の合計枚数 + */ + private static int calculateMinCoins(final int price) { int totalCoinsCount = 0; + int calcprice = price; + // 大きい金額の硬貨から順に並んだ配列 final int[] coins = { 500, 100, 50, 10, 5, 1 }; // 金額の高い硬貨から順に購入金額を割っていき、カウント for (int i = 0; i < coins.length; i++) { - final int numCoins = price / coins[i]; + final int numCoins = calcprice / coins[i]; totalCoinsCount += numCoins; - price %= coins[i]; + calcprice %= coins[i]; } - System.out.println(totalCoinsCount); + return totalCoinsCount; + } - sc.close(); + /** + * . 計算結果を表示するメソッド + * + * @param totalCoinsCount 支払いに必要な硬貨の合計枚数 + */ + private static void displayResult(final int totalCoinsCount) { + System.out.println(totalCoinsCount); } } -- GitLab