diff --git a/docs/README.md b/docs/README.md index e69de29bb2d..49520b33786 100644 --- a/docs/README.md +++ b/docs/README.md @@ -0,0 +1,43 @@ +# 요구 사항 +## 기능 요구 사항 +- 사용자가 로또 구입 금액 입력 시 그에 해당하는 만큼 로또 발행 + - 로또 번호의 숫자 범위는 1~45까지 + - 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑음 + - 로또 한 개의 가격은 1000원 +- 당첨 번호는 입력을 통해 받음 + - 당첨 번호와 보너스 번호까지 입력 받음 + - 1~45까지의 중복되지 않는 숫자 + - 보너스 번호는 당첨 번호와 같은 숫자면 안 됨 +- 당첨 가격 + - 1등 6개 번호 일치 / 2,000,000,000원 + - 2등 5개 + 보너스 번호 일치 / 30,000,000원 + - 3등 5개 번호 일치 / 1,500,000원 + - 4등 4개 번호 일치 / 50000원 + - 5등 3개 번호 일치 / 5000원 + +## 입력 요구 사항 +- 로또 구입 금액을 입력 받음 + - 1000원 단위로 입력 받으며 + - 1000원으로 나누어 떨어지지 않으면 예외처리 +- 당첨 번호를 입력 받음 + - 쉼표를 기준으로 구분 + - 보너스 번호도 입력 + +## 출력 요구 사항 +- 구입금액을 입력해 주세요. +- 3개를 구매했습니다.
+[8, 21, 23, 41, 42, 43]
+[3, 5, 11, 16, 32, 38]
+[7, 11, 16, 35, 36, 44]
+#### 위와 같이 로또 당첨 번호를 출력하며, 오름 차순으로 정렬한다. +- 당첨 번호를 입력해 주세요 +- 보너스 번호를 입력해 주세요 +- 당첨 통계
+"---"
+ 3개 일치 (5,000원) - 1개
+ 4개 일치 (50,000원) - 0개
+ 5개 일치 (1,500,000원) - 0개
+ 5개 일치, 보너스 볼 일치 (30,000,000원) - 0개
+ 6개 일치 (2,000,000,000원) - 0개
+ 총 수익률은 62.5%입니다.
+#### 위와 같이 당첨 된 금액을 알려주고, 총 수익률을 계산해서 알려준다. \ No newline at end of file diff --git a/src/main/java/lotto/Lotto.java b/src/main/java/lotto/Lotto.java index 519793d1f73..9f385ef3427 100644 --- a/src/main/java/lotto/Lotto.java +++ b/src/main/java/lotto/Lotto.java @@ -1,6 +1,8 @@ package lotto; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class Lotto { private final List numbers; @@ -10,10 +12,19 @@ public Lotto(List numbers) { this.numbers = numbers; } - private void validate(List numbers) { + private void validate(List numbers) throws IllegalArgumentException{ if (numbers.size() != 6) { throw new IllegalArgumentException(); } + isDuplicate(numbers); + } + private void isDuplicate(List numbers) { + Set uniqueNumbers = new HashSet<>(); + for (Integer number : numbers) { + if (!uniqueNumbers.add(number)) { + throw new IllegalArgumentException(); + } + } } // TODO: 추가 기능 구현