Skip to content

Conversation

@simhokyung
Copy link

💻 우테코 6기 3주 - 로또

Console을 이용하여 로또 생성기를 구현한다.
구입 금액에 맞춰 로또를 발행하고, 당첨 내역을 출력한다.


📥 입출력 명세

▫ 입력

  1. 로또 구입 금액을 입력 받는다. 구입 금액은 1,000원 단위로 입력 받으며 1,000원으로 나누어 떨어지지 않는 경우 예외 처리한다.
  2. 당첨 번호를 입력 받는다. 번호는 쉼표(,)를 기준으로 구분한다.
  3. 보너스 번호를 입력 받는다.

▫ 출력

  1. 발행한 로또 수량 및 번호를 출력한다. 로또 번호는 오름차순으로 정렬하여 보여준다.
    )
  2. 당첨 내역을 출력한다.
  3. 수익률은 소수점 둘째 자리에서 반올림한다. (ex. 100.0%, 51.5%, 1,000,000.0%)
  4. 예외 상황 시 에러 문구를 출력해야 한다. 단, 에러 문구는 "[ERROR]"로 시작해야 한다.

▫ 실행 예시

구입금액을 입력해 주세요.
8000

8개를 구매했습니다.
[8, 21, 23, 41, 42, 43] 
[3, 5, 11, 16, 32, 38] 
[7, 11, 16, 35, 36, 44] 
[1, 8, 11, 31, 41, 42] 
[13, 14, 16, 38, 42, 45] 
[7, 11, 30, 40, 42, 43] 
[2, 13, 22, 32, 38, 45] 
[1, 3, 5, 14, 22, 45]

당첨 번호를 입력해 주세요.
1,2,3,4,5,6

보너스 번호를 입력해 주세요.
7

당첨 통계
---
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%입니다.

📄기능 구현 목록

1) 입력 흐름

  • InputView, OutputView 입출력 뼈대 구성
  • 구입금액 입력받아 파싱
  • 당첨번호 입력받아 파싱
  • 보너스 번호 입력받아 파싱

2) 주요 기능

  • Lottos 도메인 구현
  • LottoGenerator 구현
  • Lotto 도메인 구현
  • Rank(Enum) 구현
  • WinningNumbers 도메인 구현
  • 로또 생성 기능 구현
  • WinCountCalculator 구현(로또 당첨 횟수 계산)
  • 로또 당첨 내역 기능 구현
  • 로또 수익률 계산 기능 구현

3) 예외 및 주의사항 체크

  • 로또 번호의 숫자 범위는 1~45까지이다.
  • 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다.
  • 로또 구입 금액을 입력하면 구입 금액에 해당하는 만큼 로또를 발행해야 한다.
  • 로또 1장의 가격은 1,000원이다.
  • 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다.
  • 구입 금액은 1,000원 단위로 입력 받으며 1,000원으로 나누어 떨어지지 않는 경우 예외 처리한다.
  • 로또 번호는 오름차순으로 정렬하여 보여준다.
  • 수익률은 소수점 둘째 자리에서 반올림한다.
  • 에러 문구는 "[ERROR]"로 시작해야 한다.
  • Java Enum을 적용한다.
  • 도메인 로직에 단위 테스트를 구현해야 한다.
  • Randoms 및 Console API를 사용하여 구현해야 한다.
  • 제공된 Lotto 클래스를 활용해 구현해야 한다.
  • numbers의 접근 제어자인 private을 변경할 수 없다.
  • Lotto에 필드(인스턴스 변수)를 추가할 수 없다.

4) 프로그래밍 요구사항 체크

  • 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다.
  • indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
  • 3항 연산자를 쓰지 않는다.

5) 리팩토링

  • 체크완료

6) 테스트 기능 목록 체크

  • 기능테스트: 전체 기능 구현: ("8000", "1,2,3,4,5,6", "7") 입력 시 실행예시에 맞게 출력
  • 예외테스트: 구입금액("1000j") 입력 시 에러발생
  • 에러 테스트: 로또 번호의 개수가 6개가 넘어가면 예외가 발생
  • 에러 테스트: 로또 번호에 중복된 숫자가 있으면 예외가 발생

@simhokyung simhokyung closed this by deleting the head repository Jan 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant