From 454c575a10d5e00799b555a8317b93ba103ad474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sat, 1 Aug 2026 11:45:59 +0900 Subject: [PATCH 01/19] =?UTF-8?q?feat:=201=EB=8B=A8=EA=B3=84=20=EB=A1=9C?= =?UTF-8?q?=EB=98=90=20=EC=9E=90=EB=8F=99=20=EA=B5=AC=EB=A7=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Lotto.java | 58 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/java/Lotto.java diff --git a/src/main/java/Lotto.java b/src/main/java/Lotto.java new file mode 100644 index 000000000..6c1b4f89d --- /dev/null +++ b/src/main/java/Lotto.java @@ -0,0 +1,58 @@ +import java.util.*; + +public class Lotto { + private int calculateCount(int price) { + return price / 1000; + } + + private static List lottoList() { + List lotto = new ArrayList<>(); + + for (int i = 0; i < 45; i++) { + lotto.add(i+1); + } + return lotto; + } + + private void lottoShuffle(List lotto) { + Collections.shuffle(lotto); + } + + private List lottoPick(List lotto) { + List lottoSix = new ArrayList<>(lotto.subList(0, 6)); + return lottoSix; + } + + private void lottoSort(List lotto) { + Collections.sort(lotto); + } + + private void run() { + List lottoList = lottoList(); + + lottoShuffle(lottoList); + lottoList = lottoPick(lottoList); + lottoSort(lottoList); + + System.out.println(lottoList); + } + + private int inputPrice() { + Scanner scanner = new Scanner(System.in); + + System.out.println("구입금액을 입력해 주세요."); + int price = scanner.nextInt(); + + return price; + } + + public static void main(String[] args) { + Lotto lotto = new Lotto(); + int price = lotto.calculateCount(lotto.inputPrice()); + + System.out.println(price + "개를 구매했습니다."); + for (int i = 0; i < price; i++) { + lotto.run(); + } + } +} From 93aa2d47b52ea97376f5785d5011f4e8c285ac8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sat, 1 Aug 2026 12:14:45 +0900 Subject: [PATCH 02/19] =?UTF-8?q?refactor:=20MVC=20=ED=8C=A8=ED=84=B4=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 15 ++++++++++++++ src/main/java/{ => domain}/Lotto.java | 29 +++++++-------------------- src/main/java/view/InputView.java | 14 +++++++++++++ src/main/java/view/ResultView.java | 15 ++++++++++++++ 4 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 src/main/java/Application.java rename src/main/java/{ => domain}/Lotto.java (57%) create mode 100644 src/main/java/view/InputView.java create mode 100644 src/main/java/view/ResultView.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java new file mode 100644 index 000000000..938205c87 --- /dev/null +++ b/src/main/java/Application.java @@ -0,0 +1,15 @@ +import view.InputView; +import view.ResultView; +import domain.Lotto; + + +public class Application { + public static void main(String[] args) { + Lotto lotto = new Lotto(); + + int price = InputView.inputPrice(); + price = lotto.calculateCount(price); + + ResultView.printPurchase(price); + } +} diff --git a/src/main/java/Lotto.java b/src/main/java/domain/Lotto.java similarity index 57% rename from src/main/java/Lotto.java rename to src/main/java/domain/Lotto.java index 6c1b4f89d..84b2b0dd5 100644 --- a/src/main/java/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -1,7 +1,11 @@ -import java.util.*; +package domain; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class Lotto { - private int calculateCount(int price) { + public int calculateCount(int price) { return price / 1000; } @@ -27,7 +31,7 @@ private void lottoSort(List lotto) { Collections.sort(lotto); } - private void run() { + public void run() { List lottoList = lottoList(); lottoShuffle(lottoList); @@ -36,23 +40,4 @@ private void run() { System.out.println(lottoList); } - - private int inputPrice() { - Scanner scanner = new Scanner(System.in); - - System.out.println("구입금액을 입력해 주세요."); - int price = scanner.nextInt(); - - return price; - } - - public static void main(String[] args) { - Lotto lotto = new Lotto(); - int price = lotto.calculateCount(lotto.inputPrice()); - - System.out.println(price + "개를 구매했습니다."); - for (int i = 0; i < price; i++) { - lotto.run(); - } - } } diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 000000000..ae5fd057d --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,14 @@ +package view; + +import java.util.Scanner; + +public class InputView { + public static int inputPrice() { + Scanner scanner = new Scanner(System.in); + + System.out.println("구입금액을 입력해 주세요."); + int price = scanner.nextInt(); + + return price; + } +} diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java new file mode 100644 index 000000000..3a49136a8 --- /dev/null +++ b/src/main/java/view/ResultView.java @@ -0,0 +1,15 @@ +package view; + +import domain.Lotto; + +public class ResultView { + + public static void printPurchase(int price) { + Lotto lotto = new Lotto(); + + System.out.println(price + "개를 구매했습니다."); + for (int i = 0; i < price; i++) { + lotto.run(); + } + } +} From 549c80dc85f802f0375404634c25534885830e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 2 Aug 2026 21:41:32 +0900 Subject: [PATCH 03/19] =?UTF-8?q?feat:=202=EB=8B=A8=EA=B3=84=20=EB=A1=9C?= =?UTF-8?q?=EB=98=90=20=EB=8B=B9=EC=B2=A8=20=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 22 +++++++++++++--- src/main/java/domain/Lotto.java | 14 ++++++++-- src/main/java/domain/LottoResult.java | 35 ++++++++++++++++++++++++ src/main/java/domain/Purchase.java | 17 ++++++++++++ src/main/java/domain/WinningRate.java | 38 +++++++++++++++++++++++++++ src/main/java/view/InputView.java | 19 +++++++++++++- src/main/java/view/ResultView.java | 28 +++++++++++++++----- 7 files changed, 161 insertions(+), 12 deletions(-) create mode 100644 src/main/java/domain/LottoResult.java create mode 100644 src/main/java/domain/Purchase.java create mode 100644 src/main/java/domain/WinningRate.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 938205c87..242236932 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,15 +1,31 @@ +import domain.LottoResult; +import domain.WinningRate; import view.InputView; import view.ResultView; import domain.Lotto; +import java.util.List; + public class Application { public static void main(String[] args) { Lotto lotto = new Lotto(); + LottoResult lottoResult = new LottoResult(); + WinningRate winningRate = new WinningRate(); + + int purchasePrice = InputView.inputPrice(); + int lottoCount = lotto.calculateCount(purchasePrice); + + List> lottos = lotto.lottoLists(lottoCount); + ResultView.printPurchase(lottos); - int price = InputView.inputPrice(); - price = lotto.calculateCount(price); + List wins = InputView.inputWinning(); + List counts = lottoResult.calculateCounts(lottos, wins); - ResultView.printPurchase(price); + int winPrice = winningRate.calculateWinPrice(counts); + double rate = winningRate.calculateRate(winPrice, purchasePrice); + + ResultView.printResult(counts, rate); } } + diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index 84b2b0dd5..d57678219 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -31,13 +31,23 @@ private void lottoSort(List lotto) { Collections.sort(lotto); } - public void run() { + public List run() { List lottoList = lottoList(); lottoShuffle(lottoList); lottoList = lottoPick(lottoList); lottoSort(lottoList); - System.out.println(lottoList); + return lottoList; } + + public List> lottoLists(int price) { + List> lottos = new ArrayList<>(); + for (int i = 0; i < price; i++) { + lottos.add(run()); + } + return lottos; + } + + } diff --git a/src/main/java/domain/LottoResult.java b/src/main/java/domain/LottoResult.java new file mode 100644 index 000000000..299baa551 --- /dev/null +++ b/src/main/java/domain/LottoResult.java @@ -0,0 +1,35 @@ +package domain; + +import java.util.ArrayList; +import java.util.List; + +public class LottoResult { + + private boolean containsWinningNumber(List lottoList, int win) { + return lottoList.contains(win); + } + + private int resultCounting(List lottoList, int win, int count) { + if (containsWinningNumber(lottoList, win)) { + count++; + } + return count; + } + + private int checkingWinningNumbers(List lottoList, List wins) { + int count = 0; + for (int win : wins) { + count = resultCounting(lottoList, win, count); + } + return count; + } + + public List calculateCounts(List> lottos, List wins) { + List counts = new ArrayList<>(); + + for (List lotto : lottos) { + counts.add(checkingWinningNumbers(lotto, wins)); + } + return counts; + } +} diff --git a/src/main/java/domain/Purchase.java b/src/main/java/domain/Purchase.java new file mode 100644 index 000000000..31f05dab3 --- /dev/null +++ b/src/main/java/domain/Purchase.java @@ -0,0 +1,17 @@ +package domain; + +public class Purchase { + private final int price; + + private Purchase(int price) { + this.price = price; + } + + private int getLottoCount() { + return price / 1000; + } + + private int getPrice() { + return price; + } +} diff --git a/src/main/java/domain/WinningRate.java b/src/main/java/domain/WinningRate.java new file mode 100644 index 000000000..a8b50560a --- /dev/null +++ b/src/main/java/domain/WinningRate.java @@ -0,0 +1,38 @@ +package domain; + +import java.util.List; + +public class WinningRate { + + public int calculateWinPrice(List counts) { + return threeWin(counts) + fourWin(counts) + fiveWin(counts) + sixWin(counts); + } + + private int threeWin(List counts) { + return countGoal(counts, 3) * 5000; + } + + private int fourWin(List counts) { + return countGoal(counts, 4) * 5000; + } + + private int fiveWin(List counts) { + return countGoal(counts, 5) * 5000; + } + private int sixWin(List counts) { + return countGoal(counts, 6) * 5000; + } + + private int countGoal(List counts, int goal) { + int count = 0; + + for (int i = 0; i < counts.size(); i++) { + if (goal == counts.get(i)) count++; + } + return count; + } + + public double calculateRate(int winPrice, int purchasePrice) { + return (double) winPrice / purchasePrice; + } +} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index ae5fd057d..7a637d7ae 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -1,14 +1,31 @@ package view; +import java.util.ArrayList; +import java.util.List; import java.util.Scanner; public class InputView { + + private static Scanner scanner = new Scanner(System.in); + public static int inputPrice() { - Scanner scanner = new Scanner(System.in); System.out.println("구입금액을 입력해 주세요."); int price = scanner.nextInt(); return price; } + + public static List inputWinning() { + scanner.nextLine(); + System.out.println("\n지난 주 당첨 번호를 입력해 주세요."); + String win = scanner.nextLine(); + + String[] wins = win.split(","); + List nums = new ArrayList<>(); + + for (int i = 0; i < wins.length; i++) { + nums.add(Integer.parseInt(wins[i])); + } return nums; + } } diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 3a49136a8..867865102 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -1,15 +1,31 @@ package view; -import domain.Lotto; +import java.util.List; public class ResultView { - public static void printPurchase(int price) { - Lotto lotto = new Lotto(); + public static void printPurchase(List> lottos) { + System.out.println(lottos.size() + "개를 구매했습니다."); + for (List lotto : lottos) { + System.out.println(lotto); + } + } + + public static void printResult(List counts, double rate) { + System.out.println(); + System.out.println("당첨 통계"); + System.out.println("---------"); - System.out.println(price + "개를 구매했습니다."); - for (int i = 0; i < price; i++) { - lotto.run(); + int[] result = new int[7]; + + for (int count : counts) { + result[count]++; } + + System.out.println("3개 일치 (5,000원) - " + result[3] + "개"); + System.out.println("4개 일치 (50,000원) - " + result[4] + "개"); + System.out.println("5개 일치 (1,500,000원) - " + result[5] + "개"); + System.out.println("6개 일치 (2,000,000,000원) - " + result[6] + "개"); + System.out.printf("총 수익률은 %.2f입니다.\n", rate); } } From 7d69333b14b0d7f5fb02a0a467cd24ebb4221e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 2 Aug 2026 22:07:43 +0900 Subject: [PATCH 04/19] =?UTF-8?q?feat:=203=EB=8B=A8=EA=B3=84=20=EB=A1=9C?= =?UTF-8?q?=EB=98=90=202=EB=93=B1=20=EB=8B=B9=EC=B2=A8=20=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 3 ++- src/main/java/domain/LottoResult.java | 8 +++++--- src/main/java/domain/WinningPrize.java | 25 +++++++++++++++++++++++++ src/main/java/domain/WinningRate.java | 19 ++++++++++++++----- src/main/java/view/InputView.java | 6 ++++++ src/main/java/view/ResultView.java | 3 ++- 6 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 src/main/java/domain/WinningPrize.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 242236932..0e30ac280 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -20,7 +20,8 @@ public static void main(String[] args) { ResultView.printPurchase(lottos); List wins = InputView.inputWinning(); - List counts = lottoResult.calculateCounts(lottos, wins); + int bonusBall = InputView.inputBonusBall(); + List counts = lottoResult.calculateCounts(lottos, wins, bonusBall); int winPrice = winningRate.calculateWinPrice(counts); double rate = winningRate.calculateRate(winPrice, purchasePrice); diff --git a/src/main/java/domain/LottoResult.java b/src/main/java/domain/LottoResult.java index 299baa551..4b3a05be4 100644 --- a/src/main/java/domain/LottoResult.java +++ b/src/main/java/domain/LottoResult.java @@ -16,19 +16,21 @@ private int resultCounting(List lottoList, int win, int count) { return count; } - private int checkingWinningNumbers(List lottoList, List wins) { + private int checkingWinningNumbers(List lottoList, List wins, int bonusBall) { int count = 0; for (int win : wins) { count = resultCounting(lottoList, win, count); } + + if (count == 5 && containsWinningNumber(lottoList, bonusBall)) return 7; return count; } - public List calculateCounts(List> lottos, List wins) { + public List calculateCounts(List> lottos, List wins, int bonusBall) { List counts = new ArrayList<>(); for (List lotto : lottos) { - counts.add(checkingWinningNumbers(lotto, wins)); + counts.add(checkingWinningNumbers(lotto, wins, bonusBall)); } return counts; } diff --git a/src/main/java/domain/WinningPrize.java b/src/main/java/domain/WinningPrize.java new file mode 100644 index 000000000..73821fc79 --- /dev/null +++ b/src/main/java/domain/WinningPrize.java @@ -0,0 +1,25 @@ +package domain; + +public enum WinningPrize { + THREE(3, 5000), + FOUR(4, 50000), + FIVE(5, 1500000), + BONUS(7, 30000000), + SIX(6, 2000000000); + + private final int goal; + private final int prize; + + WinningPrize(int goal, int prize) { + this.goal = goal; + this.prize = prize; + } + + public int getGoal() { + return goal; + } + + public int getPrize() { + return prize; + } +} diff --git a/src/main/java/domain/WinningRate.java b/src/main/java/domain/WinningRate.java index a8b50560a..8729f1329 100644 --- a/src/main/java/domain/WinningRate.java +++ b/src/main/java/domain/WinningRate.java @@ -5,22 +5,31 @@ public class WinningRate { public int calculateWinPrice(List counts) { - return threeWin(counts) + fourWin(counts) + fiveWin(counts) + sixWin(counts); + return threeWin(counts) + fourWin(counts) + fiveWin(counts) + secondWin(counts) + sixWin(counts); } private int threeWin(List counts) { - return countGoal(counts, 3) * 5000; + return countGoal(counts, WinningPrize.THREE.getGoal()) * WinningPrize.THREE.getPrize(); } private int fourWin(List counts) { - return countGoal(counts, 4) * 5000; + return countGoal(counts, WinningPrize.FOUR.getGoal()) + * WinningPrize.FOUR.getPrize(); } private int fiveWin(List counts) { - return countGoal(counts, 5) * 5000; + return countGoal(counts, WinningPrize.FIVE.getGoal()) + * WinningPrize.FIVE.getPrize(); } + + private int secondWin(List counts) { + return countGoal(counts, WinningPrize.BONUS.getGoal()) + * WinningPrize.BONUS.getPrize(); + } + private int sixWin(List counts) { - return countGoal(counts, 6) * 5000; + return countGoal(counts, WinningPrize.SIX.getGoal()) + * WinningPrize.SIX.getPrize(); } private int countGoal(List counts, int goal) { diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 7a637d7ae..a349e8f9d 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -28,4 +28,10 @@ public static List inputWinning() { nums.add(Integer.parseInt(wins[i])); } return nums; } + public static int inputBonusBall() { + System.out.println("\n보너스 볼을 입력해 주세요."); + int bonusBall = scanner.nextInt(); + + return bonusBall; + } } diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 867865102..0f6b094d5 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -16,7 +16,7 @@ public static void printResult(List counts, double rate) { System.out.println("당첨 통계"); System.out.println("---------"); - int[] result = new int[7]; + int[] result = new int[8]; for (int count : counts) { result[count]++; @@ -25,6 +25,7 @@ public static void printResult(List counts, double rate) { System.out.println("3개 일치 (5,000원) - " + result[3] + "개"); System.out.println("4개 일치 (50,000원) - " + result[4] + "개"); System.out.println("5개 일치 (1,500,000원) - " + result[5] + "개"); + System.out.println("5개 일치, 보너스 볼 일치 (30,000,000원) - " + result[7] + "개"); System.out.println("6개 일치 (2,000,000,000원) - " + result[6] + "개"); System.out.printf("총 수익률은 %.2f입니다.\n", rate); } From d02b955d0d808cdf2cb038d3f8d485a6025a6e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 2 Aug 2026 23:00:52 +0900 Subject: [PATCH 05/19] =?UTF-8?q?feat:=204=EB=8B=A8=EA=B3=84=20=EB=A1=9C?= =?UTF-8?q?=EB=98=90=20=EC=88=98=EB=8F=99=20=EA=B5=AC=EB=A7=A4=20=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 11 +++++++--- src/main/java/domain/Lotto.java | 22 +++++++++++-------- src/main/java/domain/LottoNumber.java | 13 +++++++++++ src/main/java/view/InputView.java | 31 +++++++++++++++++++++++++++ src/main/java/view/ResultView.java | 5 +++-- 5 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 src/main/java/domain/LottoNumber.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 0e30ac280..35a84c441 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -15,13 +15,18 @@ public static void main(String[] args) { int purchasePrice = InputView.inputPrice(); int lottoCount = lotto.calculateCount(purchasePrice); + int passiveCount = InputView.inputPassiveCount(); + int autoCount = lottoCount - passiveCount; - List> lottos = lotto.lottoLists(lottoCount); - ResultView.printPurchase(lottos); + List> passiveLotto = InputView.inputPassiveLotto(passiveCount); + List> autoLotto = lotto.lottoLists(autoCount); + + ResultView.printPurchase(passiveLotto, passiveCount, autoCount); + passiveLotto.addAll(autoLotto); List wins = InputView.inputWinning(); int bonusBall = InputView.inputBonusBall(); - List counts = lottoResult.calculateCounts(lottos, wins, bonusBall); + List counts = lottoResult.calculateCounts(passiveLotto, wins, bonusBall); int winPrice = winningRate.calculateWinPrice(counts); double rate = winningRate.calculateRate(winPrice, purchasePrice); diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index d57678219..0d746b972 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -22,28 +22,32 @@ private void lottoShuffle(List lotto) { Collections.shuffle(lotto); } - private List lottoPick(List lotto) { - List lottoSix = new ArrayList<>(lotto.subList(0, 6)); + private List lottoPick(List lotto) { + List lottoSix = new ArrayList<>(); + for (int i = 0; i < 6; i++) { + lottoSix.add(lotto.get(i)); + } + return lottoSix; } - private void lottoSort(List lotto) { + private void lottoSort(List lotto) { Collections.sort(lotto); } - public List run() { + public List run() { List lottoList = lottoList(); lottoShuffle(lottoList); - lottoList = lottoPick(lottoList); - lottoSort(lottoList); + List lotto = lottoPick(lottoList); + lottoSort(lotto); - return lottoList; + return lotto; } - public List> lottoLists(int price) { + public List> lottoLists(int count) { List> lottos = new ArrayList<>(); - for (int i = 0; i < price; i++) { + for (int i = 0; i < count; i++) { lottos.add(run()); } return lottos; diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java new file mode 100644 index 000000000..374ed7962 --- /dev/null +++ b/src/main/java/domain/LottoNumber.java @@ -0,0 +1,13 @@ +package domain; + +public class LottoNumber { + private final int number; + + private LottoNumber(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } +} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a349e8f9d..129ecb8ce 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -34,4 +34,35 @@ public static int inputBonusBall() { return bonusBall; } + + public static int inputPassiveCount() { + System.out.println("\n수동으로 구매할 로또 수를 입력해 주세요."); + int count = scanner.nextInt(); + return count; + } + + public static List> inputPassiveLotto(int manualCount) { + scanner.nextLine(); + + System.out.println("\n수동으로 구매할 번호를 입력해 주세요."); + List> passiveLottos = new ArrayList<>(); + + for (int i = 0; i < manualCount; i++) { + passiveLottos.add(inputManualLotto()); + } + return passiveLottos; + } + + private static List inputManualLotto() { + String input = scanner.nextLine(); + String[] numbers = input.split(","); + + List lotto = new ArrayList<>(); + + for (String number : numbers) { + lotto.add(Integer.parseInt(number.trim())); + } + + return lotto; + } } diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 0f6b094d5..276f52451 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -4,8 +4,9 @@ public class ResultView { - public static void printPurchase(List> lottos) { - System.out.println(lottos.size() + "개를 구매했습니다."); + public static void printPurchase(List> lottos, int passiveCount, int autoCount) { + System.out.println("수동으로 " + passiveCount + "장, 자동으로 " + autoCount + "개를 구매했습니다." + ); for (List lotto : lottos) { System.out.println(lotto); } From 915790b75dda0b64b6b01333d3fb8786319a7483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Thu, 6 Aug 2026 22:51:11 +0900 Subject: [PATCH 06/19] =?UTF-8?q?LottoNumber=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A6=AC=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20LottoPick=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 2 +- src/main/java/domain/LottoNumber.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index 0d746b972..2ef3d0c79 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -25,7 +25,7 @@ private void lottoShuffle(List lotto) { private List lottoPick(List lotto) { List lottoSix = new ArrayList<>(); for (int i = 0; i < 6; i++) { - lottoSix.add(lotto.get(i)); + lottoSix.add(LottoNumber.from(lotto.get(i))); } return lottoSix; diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index 374ed7962..12db946c0 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -3,11 +3,15 @@ public class LottoNumber { private final int number; - private LottoNumber(int number) { + public LottoNumber(int number) { this.number = number; } public int getNumber() { return number; } + + public static LottoNumber from(int number) { + return new LottoNumber(number); + } } From d8d6548f0476f72f83ed81d3c1b8fecbd5fbcf0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Thu, 6 Aug 2026 23:38:05 +0900 Subject: [PATCH 07/19] =?UTF-8?q?LottoNumber=20=EC=9C=A0=ED=9A=A8=EC=84=B1?= =?UTF-8?q?=20=EA=B2=80=EC=82=AC=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 5 +++-- src/main/java/domain/Lotto.java | 2 +- src/main/java/domain/LottoNumber.java | 10 ++++++++++ src/main/java/domain/LottoResult.java | 12 ++++++------ src/main/java/view/InputView.java | 12 +++++++----- src/main/java/view/ResultView.java | 6 ++++-- src/test/java/LottoNumberTest.java | 24 ++++++++++++++++++++++++ 7 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 src/test/java/LottoNumberTest.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 35a84c441..5ca132227 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,3 +1,4 @@ +import domain.LottoNumber; import domain.LottoResult; import domain.WinningRate; import view.InputView; @@ -18,8 +19,8 @@ public static void main(String[] args) { int passiveCount = InputView.inputPassiveCount(); int autoCount = lottoCount - passiveCount; - List> passiveLotto = InputView.inputPassiveLotto(passiveCount); - List> autoLotto = lotto.lottoLists(autoCount); + List> passiveLotto = InputView.inputPassiveLotto(passiveCount); + List> autoLotto = lotto.lottoLists(autoCount); ResultView.printPurchase(passiveLotto, passiveCount, autoCount); passiveLotto.addAll(autoLotto); diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index 2ef3d0c79..ba8bdf93b 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -46,7 +46,7 @@ public List run() { } public List> lottoLists(int count) { - List> lottos = new ArrayList<>(); + List> lottos = new ArrayList<>(); for (int i = 0; i < count; i++) { lottos.add(run()); } diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index 12db946c0..bbaa92d9e 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -12,6 +12,16 @@ public int getNumber() { } public static LottoNumber from(int number) { + validate(number); return new LottoNumber(number); } + + private static final int MIN = 1; + private static final int MAX = 45; + + private static void validate(int number) { + if (number < MIN || number > MAX) { + throw new IllegalArgumentException(); + } + } } diff --git a/src/main/java/domain/LottoResult.java b/src/main/java/domain/LottoResult.java index 4b3a05be4..731d3a468 100644 --- a/src/main/java/domain/LottoResult.java +++ b/src/main/java/domain/LottoResult.java @@ -5,18 +5,18 @@ public class LottoResult { - private boolean containsWinningNumber(List lottoList, int win) { - return lottoList.contains(win); + private boolean containsWinningNumber(List lottoList, int win) { + return lottoList.contains(LottoNumber.from(win)); } - private int resultCounting(List lottoList, int win, int count) { + private int resultCounting(List lottoList, int win, int count) { if (containsWinningNumber(lottoList, win)) { count++; } return count; } - private int checkingWinningNumbers(List lottoList, List wins, int bonusBall) { + private int checkingWinningNumbers(List lottoList, List wins, int bonusBall) { int count = 0; for (int win : wins) { count = resultCounting(lottoList, win, count); @@ -26,10 +26,10 @@ private int checkingWinningNumbers(List lottoList, List wins, return count; } - public List calculateCounts(List> lottos, List wins, int bonusBall) { + public List calculateCounts(List> lottos, List wins, int bonusBall) { List counts = new ArrayList<>(); - for (List lotto : lottos) { + for (List lotto : lottos) { counts.add(checkingWinningNumbers(lotto, wins, bonusBall)); } return counts; diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 129ecb8ce..016f74460 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -1,5 +1,7 @@ package view; +import domain.LottoNumber; + import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -41,11 +43,11 @@ public static int inputPassiveCount() { return count; } - public static List> inputPassiveLotto(int manualCount) { + public static List> inputPassiveLotto(int manualCount) { scanner.nextLine(); System.out.println("\n수동으로 구매할 번호를 입력해 주세요."); - List> passiveLottos = new ArrayList<>(); + List> passiveLottos = new ArrayList<>(); for (int i = 0; i < manualCount; i++) { passiveLottos.add(inputManualLotto()); @@ -53,14 +55,14 @@ public static List> inputPassiveLotto(int manualCount) { return passiveLottos; } - private static List inputManualLotto() { + private static List inputManualLotto() { String input = scanner.nextLine(); String[] numbers = input.split(","); - List lotto = new ArrayList<>(); + List lotto = new ArrayList<>(); for (String number : numbers) { - lotto.add(Integer.parseInt(number.trim())); + lotto.add(LottoNumber.from(Integer.parseInt(number.trim()))); } return lotto; diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 276f52451..6486d39e0 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -1,13 +1,15 @@ package view; +import domain.LottoNumber; + import java.util.List; public class ResultView { - public static void printPurchase(List> lottos, int passiveCount, int autoCount) { + public static void printPurchase(List> lottos, int passiveCount, int autoCount) { System.out.println("수동으로 " + passiveCount + "장, 자동으로 " + autoCount + "개를 구매했습니다." ); - for (List lotto : lottos) { + for (List lotto : lottos) { System.out.println(lotto); } } diff --git a/src/test/java/LottoNumberTest.java b/src/test/java/LottoNumberTest.java new file mode 100644 index 000000000..1aadec539 --- /dev/null +++ b/src/test/java/LottoNumberTest.java @@ -0,0 +1,24 @@ +import domain.LottoNumber; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; + + +public class LottoNumberTest { + + @Test + @DisplayName("유효한 번호로 LottoNumber를 생성") + void lottoNumberWithValidNumber() { + LottoNumber.from(1); + LottoNumber.from(45); + } + + @Test + @DisplayName("1~45 범위를 벗어나면 예외") + void throwExceptionNumberIsOutOfRange() { + assertThrows(IllegalArgumentException.class, () -> LottoNumber.from(0)); + + assertThrows(IllegalArgumentException.class, () -> LottoNumber.from(46)); + } +} From d405a8ed83bf2bfbb4438673983114f0a6814c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Thu, 6 Aug 2026 23:57:54 +0900 Subject: [PATCH 08/19] =?UTF-8?q?LottoNumber=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EB=B9=84=EA=B5=90=20=EB=B0=8F=20sort=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/LottoNumber.java | 22 +++++++++++++++++++++- src/test/java/LottoNumberTest.java | 10 ++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index bbaa92d9e..72b8ef743 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -1,6 +1,8 @@ package domain; -public class LottoNumber { +import java.util.Objects; + +public class LottoNumber implements Comparable{ private final int number; public LottoNumber(int number) { @@ -24,4 +26,22 @@ private static void validate(int number) { throw new IllegalArgumentException(); } } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + LottoNumber that = (LottoNumber) o; + return number == that.number; + } + + @Override + public int hashCode() { + return Objects.hashCode(number); + } + + @Override + public int compareTo(LottoNumber o) { + return Integer.compare(number, o.number); + } } diff --git a/src/test/java/LottoNumberTest.java b/src/test/java/LottoNumberTest.java index 1aadec539..d27df1088 100644 --- a/src/test/java/LottoNumberTest.java +++ b/src/test/java/LottoNumberTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -21,4 +22,13 @@ void throwExceptionNumberIsOutOfRange() { assertThrows(IllegalArgumentException.class, () -> LottoNumber.from(46)); } + + @Test + @DisplayName("값이 같을 때는 같은 객체") + void equalsLottoNumber() { + LottoNumber one = LottoNumber.from(3); + LottoNumber two = LottoNumber.from(3); + + assertEquals(one, two); + } } From 50395caaf2798ac2be380d12400c232f7552cb3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 00:02:35 +0900 Subject: [PATCH 09/19] =?UTF-8?q?test:=20LottoNumber=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/LottoNumberTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/java/LottoNumberTest.java b/src/test/java/LottoNumberTest.java index d27df1088..050188b6c 100644 --- a/src/test/java/LottoNumberTest.java +++ b/src/test/java/LottoNumberTest.java @@ -2,6 +2,10 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -31,4 +35,20 @@ void equalsLottoNumber() { assertEquals(one, two); } + + @Test + @DisplayName("LottoNumber를 오름차순으로 정렬") + void sortLottoNumbersInAscendingOrder() { + List lottoNumbers = new ArrayList<>(); + + lottoNumbers.add(LottoNumber.from(2)); + lottoNumbers.add(LottoNumber.from(1)); + lottoNumbers.add(LottoNumber.from(3)); + + Collections.sort(lottoNumbers); + + assertEquals(LottoNumber.from(1), lottoNumbers.get(0)); + assertEquals(LottoNumber.from(2), lottoNumbers.get(1)); + assertEquals(LottoNumber.from(3), lottoNumbers.get(2)); + } } From 0664a3425ba7876fc1a7453adaac40e9e8bc629b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 00:08:34 +0900 Subject: [PATCH 10/19] =?UTF-8?q?refactor:=20LottoNumber=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9E=90=20private=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/LottoNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index 72b8ef743..f1756e6a2 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -5,7 +5,7 @@ public class LottoNumber implements Comparable{ private final int number; - public LottoNumber(int number) { + private LottoNumber(int number) { this.number = number; } From 27c891fe7fb191c51ea4d3ecc68b8d2921768bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 00:40:14 +0900 Subject: [PATCH 11/19] =?UTF-8?q?refactor:=20Lotto=EB=A5=BC=20=EC=9D=BC?= =?UTF-8?q?=EA=B8=89=20=EC=BB=AC=EB=A0=89=EC=85=98=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20LottoGenerator=EB=A1=9C=20?= =?UTF-8?q?=EC=B1=85=EC=9E=84=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 11 ++--- src/main/java/domain/Lotto.java | 55 +++++++---------------- src/main/java/domain/LottoGenerator.java | 57 ++++++++++++++++++++++++ src/test/java/LottoTest.java | 56 +++++++++++++++++++++++ 4 files changed, 134 insertions(+), 45 deletions(-) create mode 100644 src/main/java/domain/LottoGenerator.java create mode 100644 src/test/java/LottoTest.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 5ca132227..acdee39fe 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -1,26 +1,23 @@ -import domain.LottoNumber; -import domain.LottoResult; -import domain.WinningRate; +import domain.*; import view.InputView; import view.ResultView; -import domain.Lotto; import java.util.List; public class Application { public static void main(String[] args) { - Lotto lotto = new Lotto(); + LottoGenerator lottoGenerator = new LottoGenerator(); LottoResult lottoResult = new LottoResult(); WinningRate winningRate = new WinningRate(); int purchasePrice = InputView.inputPrice(); - int lottoCount = lotto.calculateCount(purchasePrice); + int lottoCount = lottoGenerator.calculateCount(purchasePrice); int passiveCount = InputView.inputPassiveCount(); int autoCount = lottoCount - passiveCount; List> passiveLotto = InputView.inputPassiveLotto(passiveCount); - List> autoLotto = lotto.lottoLists(autoCount); + List> autoLotto = lottoGenerator.lottoLists(autoCount); ResultView.printPurchase(passiveLotto, passiveCount, autoCount); passiveLotto.addAll(autoLotto); diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index ba8bdf93b..e51b15551 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -1,57 +1,36 @@ package domain; -import java.util.ArrayList; -import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class Lotto { - public int calculateCount(int price) { - return price / 1000; - } - - private static List lottoList() { - List lotto = new ArrayList<>(); + private final List numbers; - for (int i = 0; i < 45; i++) { - lotto.add(i+1); - } - return lotto; + private Lotto(List numbers) { + this.numbers = numbers; } - private void lottoShuffle(List lotto) { - Collections.shuffle(lotto); + public static Lotto from(List numbers) { + validateCount(numbers); + validateDuplicate(numbers); + return new Lotto(numbers); } - private List lottoPick(List lotto) { - List lottoSix = new ArrayList<>(); - for (int i = 0; i < 6; i++) { - lottoSix.add(LottoNumber.from(lotto.get(i))); + private static void validateCount(List numbers) { + if(numbers.size() != 6) { + throw new IllegalArgumentException(); } - - return lottoSix; } - private void lottoSort(List lotto) { - Collections.sort(lotto); + private static void validateDuplicate(List numbers) { + Set set = new HashSet<>(numbers); + if (set.size() != numbers.size()) { + throw new IllegalArgumentException(); + } } - public List run() { - List lottoList = lottoList(); - lottoShuffle(lottoList); - List lotto = lottoPick(lottoList); - lottoSort(lotto); - - return lotto; - } - - public List> lottoLists(int count) { - List> lottos = new ArrayList<>(); - for (int i = 0; i < count; i++) { - lottos.add(run()); - } - return lottos; - } } diff --git a/src/main/java/domain/LottoGenerator.java b/src/main/java/domain/LottoGenerator.java new file mode 100644 index 000000000..60a5e5126 --- /dev/null +++ b/src/main/java/domain/LottoGenerator.java @@ -0,0 +1,57 @@ +package domain; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class LottoGenerator { + public int calculateCount(int price) { + return price / 1000; + } + + private static List lottoList() { + List lotto = new ArrayList<>(); + + for (int i = 0; i < 45; i++) { + lotto.add(i+1); + } + return lotto; + } + + private void lottoShuffle(List lotto) { + Collections.shuffle(lotto); + } + + private List lottoPick(List lotto) { + List lottoSix = new ArrayList<>(); + for (int i = 0; i < 6; i++) { + lottoSix.add(LottoNumber.from(lotto.get(i))); + } + + return lottoSix; + } + + private void lottoSort(List lotto) { + Collections.sort(lotto); + } + + public List run() { + List lottoList = lottoList(); + + lottoShuffle(lottoList); + List lotto = lottoPick(lottoList); + lottoSort(lotto); + + return lotto; + } + + public List> lottoLists(int count) { + List> lottos = new ArrayList<>(); + for (int i = 0; i < count; i++) { + lottos.add(run()); + } + return lottos; + } + + +} diff --git a/src/test/java/LottoTest.java b/src/test/java/LottoTest.java new file mode 100644 index 000000000..b4a276047 --- /dev/null +++ b/src/test/java/LottoTest.java @@ -0,0 +1,56 @@ +import domain.Lotto; +import domain.LottoNumber; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class LottoTest { + + @Test + @DisplayName("로또 번호가 6개인가") + void createLotto() { + List numbers = List.of( + LottoNumber.from(1), + LottoNumber.from(2), + LottoNumber.from(3), + LottoNumber.from(4), + LottoNumber.from(5), + LottoNumber.from(6) + ); + + Lotto.from(numbers); + } + + @Test + @DisplayName("로또 번호가 6개가 아닌가") + void notSixLotto() { + List numbers = List.of( + LottoNumber.from(1), + LottoNumber.from(2), + LottoNumber.from(3), + LottoNumber.from(4), + LottoNumber.from(5) + ); + + assertThrows(IllegalArgumentException.class, () -> Lotto.from(numbers)); + } + + @Test + @DisplayName("중복된 번호가 있나") + void duplicateLotto() { + List numbers = List.of( + LottoNumber.from(1), + LottoNumber.from(2), + LottoNumber.from(3), + LottoNumber.from(4), + LottoNumber.from(5), + LottoNumber.from(5) + ); + + assertThrows(IllegalArgumentException.class, () -> Lotto.from(numbers)); + } +} From 5086f62935353bd50a7de022287192e009a3b68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 00:47:55 +0900 Subject: [PATCH 12/19] =?UTF-8?q?fix:=20=EC=88=98=EB=8F=99=EA=B3=BC=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=EC=9D=84=20=ED=95=A9=EC=B9=9C=20=ED=9B=84=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Application.java b/src/main/java/Application.java index acdee39fe..a29f3befc 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -19,8 +19,8 @@ public static void main(String[] args) { List> passiveLotto = InputView.inputPassiveLotto(passiveCount); List> autoLotto = lottoGenerator.lottoLists(autoCount); - ResultView.printPurchase(passiveLotto, passiveCount, autoCount); passiveLotto.addAll(autoLotto); + ResultView.printPurchase(passiveLotto, passiveCount, autoCount); List wins = InputView.inputWinning(); int bonusBall = InputView.inputBonusBall(); From eaf32052b9b3c9209b09d679af0301b9132f231e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 00:59:09 +0900 Subject: [PATCH 13/19] =?UTF-8?q?refactor:=20LottoNumber=20toString()=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 2 +- src/main/java/domain/LottoNumber.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/Application.java b/src/main/java/Application.java index a29f3befc..707832832 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -21,7 +21,7 @@ public static void main(String[] args) { passiveLotto.addAll(autoLotto); ResultView.printPurchase(passiveLotto, passiveCount, autoCount); - + List wins = InputView.inputWinning(); int bonusBall = InputView.inputBonusBall(); List counts = lottoResult.calculateCounts(passiveLotto, wins, bonusBall); diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index f1756e6a2..ed4bfc670 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -44,4 +44,9 @@ public int hashCode() { public int compareTo(LottoNumber o) { return Integer.compare(number, o.number); } + + @Override + public String toString() { + return String.valueOf(number); + } } From 92d0254ad57048aceb84c7d340164f189cc72733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 01:05:20 +0900 Subject: [PATCH 14/19] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20scanner.nextLine()=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 2 +- src/main/java/view/InputView.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 707832832..a29f3befc 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -21,7 +21,7 @@ public static void main(String[] args) { passiveLotto.addAll(autoLotto); ResultView.printPurchase(passiveLotto, passiveCount, autoCount); - + List wins = InputView.inputWinning(); int bonusBall = InputView.inputBonusBall(); List counts = lottoResult.calculateCounts(passiveLotto, wins, bonusBall); diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 016f74460..79d04049c 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -19,7 +19,6 @@ public static int inputPrice() { } public static List inputWinning() { - scanner.nextLine(); System.out.println("\n지난 주 당첨 번호를 입력해 주세요."); String win = scanner.nextLine(); From d178e57f3c4bf84ff639586c94db5c0e74554a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Fri, 7 Aug 2026 01:26:41 +0900 Subject: [PATCH 15/19] =?UTF-8?q?refactor:=20PurchaseAmount=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=EB=B0=8F=20=EA=B3=84=EC=82=B0=20=EC=B1=85=EC=9E=84?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 4 ++- src/main/java/domain/LottoGenerator.java | 4 --- src/main/java/domain/Purchase.java | 17 ------------- src/main/java/domain/PurchaseAmount.java | 31 ++++++++++++++++++++++++ src/test/java/PurchaseAmountTest.java | 19 +++++++++++++++ 5 files changed, 53 insertions(+), 22 deletions(-) delete mode 100644 src/main/java/domain/Purchase.java create mode 100644 src/main/java/domain/PurchaseAmount.java create mode 100644 src/test/java/PurchaseAmountTest.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index a29f3befc..8d0bff680 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -12,7 +12,9 @@ public static void main(String[] args) { WinningRate winningRate = new WinningRate(); int purchasePrice = InputView.inputPrice(); - int lottoCount = lottoGenerator.calculateCount(purchasePrice); + PurchaseAmount purchaseAmount = PurchaseAmount.from(purchasePrice); + + int lottoCount = purchaseAmount.calculateCount(); int passiveCount = InputView.inputPassiveCount(); int autoCount = lottoCount - passiveCount; diff --git a/src/main/java/domain/LottoGenerator.java b/src/main/java/domain/LottoGenerator.java index 60a5e5126..14b035168 100644 --- a/src/main/java/domain/LottoGenerator.java +++ b/src/main/java/domain/LottoGenerator.java @@ -5,10 +5,6 @@ import java.util.List; public class LottoGenerator { - public int calculateCount(int price) { - return price / 1000; - } - private static List lottoList() { List lotto = new ArrayList<>(); diff --git a/src/main/java/domain/Purchase.java b/src/main/java/domain/Purchase.java deleted file mode 100644 index 31f05dab3..000000000 --- a/src/main/java/domain/Purchase.java +++ /dev/null @@ -1,17 +0,0 @@ -package domain; - -public class Purchase { - private final int price; - - private Purchase(int price) { - this.price = price; - } - - private int getLottoCount() { - return price / 1000; - } - - private int getPrice() { - return price; - } -} diff --git a/src/main/java/domain/PurchaseAmount.java b/src/main/java/domain/PurchaseAmount.java new file mode 100644 index 000000000..acf89d274 --- /dev/null +++ b/src/main/java/domain/PurchaseAmount.java @@ -0,0 +1,31 @@ +package domain; + +public class PurchaseAmount { + private final int amount; + + private PurchaseAmount(int amount) { + validate(amount); + this.amount = amount; + } + + public static PurchaseAmount from(int amount) { + return new PurchaseAmount(amount); + } + + private static void validate(int amount) { + if (amount < 1000) { + throw new IllegalArgumentException(); + } + if (amount % 1000 != 0) { + throw new IllegalArgumentException(); + } + } + + public int getAmount() { + return amount; + } + + public int calculateCount() { + return amount / 1000; + } +} diff --git a/src/test/java/PurchaseAmountTest.java b/src/test/java/PurchaseAmountTest.java new file mode 100644 index 000000000..dcb9715bd --- /dev/null +++ b/src/test/java/PurchaseAmountTest.java @@ -0,0 +1,19 @@ +import domain.PurchaseAmount; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class PurchaseAmountTest { + @Test + @DisplayName("금액이 1000원보다 작으면 예외") + void lessThan1000() { + assertThrows(IllegalArgumentException.class, () -> PurchaseAmount.from(500)); + } + + @Test + @DisplayName("금액이 1000원 단위가 아니면 예외") + void not1000Multiple() { + assertThrows(IllegalArgumentException.class, () -> PurchaseAmount.from(1500)); + } +} From cf56668eaaaeb0b2c5e23bd0a7c8139b63f12f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 9 Aug 2026 16:59:59 +0900 Subject: [PATCH 16/19] =?UTF-8?q?refactor:=20Lotto=20=EB=B0=A9=EC=96=B4?= =?UTF-8?q?=EC=A0=81=20=EB=B3=B5=EC=82=AC=20=EC=A0=81=EC=9A=A9=20=EB=B0=8F?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 7 ++++++- src/test/java/LottoTest.java | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index e51b15551..f2c5e00d3 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -1,5 +1,6 @@ package domain; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -8,7 +9,7 @@ public class Lotto { private final List numbers; private Lotto(List numbers) { - this.numbers = numbers; + this.numbers = new ArrayList<>(numbers); } public static Lotto from(List numbers) { @@ -30,6 +31,10 @@ private static void validateDuplicate(List numbers) { } } + public boolean contains(LottoNumber number) { + return numbers.contains(number); + } + diff --git a/src/test/java/LottoTest.java b/src/test/java/LottoTest.java index b4a276047..3242ca927 100644 --- a/src/test/java/LottoTest.java +++ b/src/test/java/LottoTest.java @@ -4,9 +4,11 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.util.ArrayList; import java.util.List; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class LottoTest { @@ -53,4 +55,23 @@ void duplicateLotto() { assertThrows(IllegalArgumentException.class, () -> Lotto.from(numbers)); } + + @Test + @DisplayName("방어적 기법으로 외부에서 내용을 바꿔도 유지된다.") + void maintainLotto() { + List numbers = new ArrayList<>(List.of( + LottoNumber.from(1), + LottoNumber.from(2), + LottoNumber.from(3), + LottoNumber.from(4), + LottoNumber.from(5), + LottoNumber.from(6) + )); + + Lotto lotto = Lotto.from(numbers); + numbers.clear(); + + assertTrue(lotto.contains(LottoNumber.from(1))); + + } } From 71a792ebe5203aa88da1db861f6458a6d3bc79e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 9 Aug 2026 17:41:50 +0900 Subject: [PATCH 17/19] =?UTF-8?q?refactor:=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=EB=8C=80=EC=8B=A0=20Rank=20enum=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=8F=20=EA=B4=80=EB=A0=A8=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Application.java | 6 ++-- src/main/java/domain/LottoResult.java | 14 ++++---- src/main/java/domain/Rank.java | 46 ++++++++++++++++++++++++++ src/main/java/domain/WinningPrize.java | 25 -------------- src/main/java/domain/WinningRate.java | 39 ++++------------------ src/main/java/view/ResultView.java | 28 ++++++++++------ 6 files changed, 80 insertions(+), 78 deletions(-) create mode 100644 src/main/java/domain/Rank.java delete mode 100644 src/main/java/domain/WinningPrize.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java index 8d0bff680..571d833ea 100644 --- a/src/main/java/Application.java +++ b/src/main/java/Application.java @@ -26,12 +26,12 @@ public static void main(String[] args) { List wins = InputView.inputWinning(); int bonusBall = InputView.inputBonusBall(); - List counts = lottoResult.calculateCounts(passiveLotto, wins, bonusBall); + List ranks = lottoResult.calculateRanks(passiveLotto, wins, bonusBall); - int winPrice = winningRate.calculateWinPrice(counts); + int winPrice = winningRate.calculateWinPrice(ranks); double rate = winningRate.calculateRate(winPrice, purchasePrice); - ResultView.printResult(counts, rate); + ResultView.printResult(ranks, rate); } } diff --git a/src/main/java/domain/LottoResult.java b/src/main/java/domain/LottoResult.java index 731d3a468..ee275e035 100644 --- a/src/main/java/domain/LottoResult.java +++ b/src/main/java/domain/LottoResult.java @@ -16,22 +16,22 @@ private int resultCounting(List lottoList, int win, int count) { return count; } - private int checkingWinningNumbers(List lottoList, List wins, int bonusBall) { + private Rank checkingWinningNumbers(List lottoList, List wins, int bonusBall) { int count = 0; for (int win : wins) { count = resultCounting(lottoList, win, count); } - if (count == 5 && containsWinningNumber(lottoList, bonusBall)) return 7; - return count; + boolean matchBonus = containsWinningNumber(lottoList, bonusBall); + return Rank.find(count, matchBonus); } - public List calculateCounts(List> lottos, List wins, int bonusBall) { - List counts = new ArrayList<>(); + public List calculateRanks(List> lottos, List wins, int bonusBall) { + List ranks = new ArrayList<>(); for (List lotto : lottos) { - counts.add(checkingWinningNumbers(lotto, wins, bonusBall)); + ranks.add(checkingWinningNumbers(lotto, wins, bonusBall)); } - return counts; + return ranks; } } diff --git a/src/main/java/domain/Rank.java b/src/main/java/domain/Rank.java new file mode 100644 index 000000000..98394f529 --- /dev/null +++ b/src/main/java/domain/Rank.java @@ -0,0 +1,46 @@ +package domain; + +public enum Rank { + FIRST(6, 2000000000), + SECOND(5, 30000000), + THIRD(5, 1500000), + FOURTH(4, 50000), + FIFTH(3, 5000), + MISS(0, 0); + + private final int matchCount; + private final int prize; + + Rank(int matchCount, int prize) { + this.matchCount = matchCount; + this.prize = prize; + } + + public static Rank find(int matchCount, boolean matchBonus) { + if (matchCount == 6) { + return FIRST; + } + + if (matchCount == 5 && matchBonus) { + return SECOND; + } + + if (matchCount == 5) { + return THIRD; + } + + if (matchCount == 4) { + return FOURTH; + } + + if (matchCount == 3) { + return FIFTH; + } + + return MISS; + } + + public int getPrize() { + return prize; + } +} diff --git a/src/main/java/domain/WinningPrize.java b/src/main/java/domain/WinningPrize.java deleted file mode 100644 index 73821fc79..000000000 --- a/src/main/java/domain/WinningPrize.java +++ /dev/null @@ -1,25 +0,0 @@ -package domain; - -public enum WinningPrize { - THREE(3, 5000), - FOUR(4, 50000), - FIVE(5, 1500000), - BONUS(7, 30000000), - SIX(6, 2000000000); - - private final int goal; - private final int prize; - - WinningPrize(int goal, int prize) { - this.goal = goal; - this.prize = prize; - } - - public int getGoal() { - return goal; - } - - public int getPrize() { - return prize; - } -} diff --git a/src/main/java/domain/WinningRate.java b/src/main/java/domain/WinningRate.java index 8729f1329..466a22d41 100644 --- a/src/main/java/domain/WinningRate.java +++ b/src/main/java/domain/WinningRate.java @@ -4,41 +4,14 @@ public class WinningRate { - public int calculateWinPrice(List counts) { - return threeWin(counts) + fourWin(counts) + fiveWin(counts) + secondWin(counts) + sixWin(counts); - } - - private int threeWin(List counts) { - return countGoal(counts, WinningPrize.THREE.getGoal()) * WinningPrize.THREE.getPrize(); - } - - private int fourWin(List counts) { - return countGoal(counts, WinningPrize.FOUR.getGoal()) - * WinningPrize.FOUR.getPrize(); - } - - private int fiveWin(List counts) { - return countGoal(counts, WinningPrize.FIVE.getGoal()) - * WinningPrize.FIVE.getPrize(); - } + public int calculateWinPrice(List ranks) { + int winPrice = 0; - private int secondWin(List counts) { - return countGoal(counts, WinningPrize.BONUS.getGoal()) - * WinningPrize.BONUS.getPrize(); - } - - private int sixWin(List counts) { - return countGoal(counts, WinningPrize.SIX.getGoal()) - * WinningPrize.SIX.getPrize(); - } - - private int countGoal(List counts, int goal) { - int count = 0; - - for (int i = 0; i < counts.size(); i++) { - if (goal == counts.get(i)) count++; + for (Rank rank : ranks) { + winPrice += rank.getPrize(); } - return count; + + return winPrice; } public double calculateRate(int winPrice, int purchasePrice) { diff --git a/src/main/java/view/ResultView.java b/src/main/java/view/ResultView.java index 6486d39e0..7ada66339 100644 --- a/src/main/java/view/ResultView.java +++ b/src/main/java/view/ResultView.java @@ -1,6 +1,7 @@ package view; import domain.LottoNumber; +import domain.Rank; import java.util.List; @@ -14,22 +15,29 @@ public static void printPurchase(List> lottos, int passiveCoun } } - public static void printResult(List counts, double rate) { + public static void printResult(List ranks, double rate) { System.out.println(); System.out.println("당첨 통계"); System.out.println("---------"); - int[] result = new int[8]; - for (int count : counts) { - result[count]++; + System.out.println("3개 일치 (5,000원) - " + countRank(ranks, Rank.FIFTH) + "개"); + System.out.println("4개 일치 (50,000원) - " + countRank(ranks, Rank.FOURTH) + "개"); + System.out.println("5개 일치 (1,500,000원) - " + countRank(ranks, Rank.THIRD) + "개"); + System.out.println("5개 일치, 보너스 볼 일치 (30,000,000원) - " + countRank(ranks, Rank.SECOND) + "개"); + System.out.println("6개 일치 (2,000,000,000원) - " + countRank(ranks, Rank.FIRST) + "개"); + System.out.printf("총 수익률은 %.2f입니다.\n", rate); + } + + private static int countRank(List ranks, Rank target) { + int count = 0; + + for (Rank rank : ranks) { + if (rank == target) { + count++; + } } - System.out.println("3개 일치 (5,000원) - " + result[3] + "개"); - System.out.println("4개 일치 (50,000원) - " + result[4] + "개"); - System.out.println("5개 일치 (1,500,000원) - " + result[5] + "개"); - System.out.println("5개 일치, 보너스 볼 일치 (30,000,000원) - " + result[7] + "개"); - System.out.println("6개 일치 (2,000,000,000원) - " + result[6] + "개"); - System.out.printf("총 수익률은 %.2f입니다.\n", rate); + return count; } } From 2851bd0b7b7c642a18bdf473f2613ac1d895b304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 9 Aug 2026 17:54:53 +0900 Subject: [PATCH 18/19] =?UTF-8?q?style:=20Java=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=BB=A8=EB=B2=A4=EC=85=98=EC=97=90=20=EB=A7=9E=EA=B2=8C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Lotto.java | 4 +--- src/main/java/domain/LottoGenerator.java | 2 +- src/main/java/domain/LottoNumber.java | 4 ++-- src/main/java/domain/Rank.java | 6 +++--- src/main/java/view/InputView.java | 4 +++- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/domain/Lotto.java b/src/main/java/domain/Lotto.java index f2c5e00d3..3eefcde3e 100644 --- a/src/main/java/domain/Lotto.java +++ b/src/main/java/domain/Lotto.java @@ -19,7 +19,7 @@ public static Lotto from(List numbers) { } private static void validateCount(List numbers) { - if(numbers.size() != 6) { + if (numbers.size() != 6) { throw new IllegalArgumentException(); } } @@ -36,6 +36,4 @@ public boolean contains(LottoNumber number) { } - - } diff --git a/src/main/java/domain/LottoGenerator.java b/src/main/java/domain/LottoGenerator.java index 14b035168..8dc7c3f55 100644 --- a/src/main/java/domain/LottoGenerator.java +++ b/src/main/java/domain/LottoGenerator.java @@ -9,7 +9,7 @@ private static List lottoList() { List lotto = new ArrayList<>(); for (int i = 0; i < 45; i++) { - lotto.add(i+1); + lotto.add(i + 1); } return lotto; } diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index ed4bfc670..c2a5fb36c 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -2,7 +2,7 @@ import java.util.Objects; -public class LottoNumber implements Comparable{ +public class LottoNumber implements Comparable { private final int number; private LottoNumber(int number) { @@ -22,7 +22,7 @@ public static LottoNumber from(int number) { private static final int MAX = 45; private static void validate(int number) { - if (number < MIN || number > MAX) { + if (number < MIN || number > MAX) { throw new IllegalArgumentException(); } } diff --git a/src/main/java/domain/Rank.java b/src/main/java/domain/Rank.java index 98394f529..4658648ed 100644 --- a/src/main/java/domain/Rank.java +++ b/src/main/java/domain/Rank.java @@ -1,11 +1,11 @@ package domain; public enum Rank { - FIRST(6, 2000000000), + FIRST(6, 2000000000), SECOND(5, 30000000), THIRD(5, 1500000), - FOURTH(4, 50000), - FIFTH(3, 5000), + FOURTH(4, 50000), + FIFTH(3, 5000), MISS(0, 0); private final int matchCount; diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 79d04049c..8c70f3a5d 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -27,8 +27,10 @@ public static List inputWinning() { for (int i = 0; i < wins.length; i++) { nums.add(Integer.parseInt(wins[i])); - } return nums; + } + return nums; } + public static int inputBonusBall() { System.out.println("\n보너스 볼을 입력해 주세요."); int bonusBall = scanner.nextInt(); From 13229a9d6a90da37d62ec83cd5b097ce4b76b485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=9D=B8?= <5616jiin@gmail.com> Date: Sun, 9 Aug 2026 18:06:04 +0900 Subject: [PATCH 19/19] =?UTF-8?q?refactor:=20=EB=B9=88=20=EC=A4=84=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EB=B0=8F=20getNumber()=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/LottoNumber.java | 4 ---- src/main/java/view/InputView.java | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/domain/LottoNumber.java b/src/main/java/domain/LottoNumber.java index c2a5fb36c..c628abb3d 100644 --- a/src/main/java/domain/LottoNumber.java +++ b/src/main/java/domain/LottoNumber.java @@ -9,10 +9,6 @@ private LottoNumber(int number) { this.number = number; } - public int getNumber() { - return number; - } - public static LottoNumber from(int number) { validate(number); return new LottoNumber(number); diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 8c70f3a5d..457b04047 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -19,7 +19,8 @@ public static int inputPrice() { } public static List inputWinning() { - System.out.println("\n지난 주 당첨 번호를 입력해 주세요."); + System.out.println(); + System.out.println("지난 주 당첨 번호를 입력해 주세요."); String win = scanner.nextLine(); String[] wins = win.split(",");