❐ Description
과제 기한 | 2024.10.29(화) 15:00 ~ 2024.11.05(월) 23:59 |
과제 진행 Branch | https://github.com/Gilbert9172/java-lotto-7 |
과제 제출 PR 링크 | TBD |
Git convention | https://gist.github.com/stephenparish/9941e89d80e2bc58a153#file-commit-md |
❐ Requirements
1. User
- 로또를 구입할 수 있다.
- 구매한 로또가 모두 일치하지 않을 수 있다.
- 총 세 번의 입력을 할 수 있다.(잘못 입력한 경우 댜시 입력을 할 수 있다.)
- 금액을 입력할 수 있다.
- 안내문구 : "구입금액을 입력해 주세요."
- 로또 한장의 가격은 1000원이다.
- 1000원 단위로만 구입할 수 있다.
- 당첨 번호를 입력할 수 있다.
- 안내 문구 : `당첨 번호를 입력해 주세요.`
- 쉼표(,)를 기준으로 구분한다.
- 보너스 번호를 입력할 수 있다.
- 안내 문구 : `보너스 번호를 입력해 주세요.`
- 당첨번호와 중복되는 않는 숫자를 입력한다.
- 총 두 번의 결과를 제공 받는다.
- 로또 구매후
- 구입 금액 만큼의 로또를 발행 받는다.
- 발행된 로또 정보를 오름차순으로 확인할 수 있다.
- 게임 종료 후
- 당첨 내역
- 수익률(소수점 둘째 자리에서 반올림된 값이다.)
- 로또 구매후
- 금액을 입력할 수 있다.
2. System
- 로또 한 장의 가격은 1000원이다.
- 로또 발행 규칙은 다음과 같다.
- 로또 숫자의 범위는 1~45다.
- 중복되지 않은 6개의 숫자와 보너스 번호 1개를 뽑는다.
- 보너스 번호는 앞에 뽑은 6개의 번호 중 어떤 수와도 동일할 수 없다.
- 사용자에게 구입 금액 만큼 발행해야 한다.
- 출력
- 사용자가 구매 직후 안내 문구와 발행한 번호를 출력한다.
- 안내 문구 : `${n}`개를 구매했습니다.
- 발행 번호는 오름차순으로 정렬한다.
- 로또 번호를 비교하여 다음의 결과를 출력하고 게임을 종료한다.
- 당첨 내역
- `${x}`개 일치 `(${reward}원)` - `${n}`개
- `${x}`개 일치, 보너스 볼 일치 `(${reward}원)` - `${n}`개
- 수익률
- 안내 문구 : 총 수익률은 `${xx.xx}`%입니다.
- 소수점 둘째 자리에서 반올림한다.
- 퍼센테이지(%) 기호를 붙여야 한다.
- Ex ) 100.0%, 51.5%, 1,000,000.0%
- 당첨 내역
- 사용자가 잘못된 값을 입력한 경우
- 이때 IllegalArgumentException이 발생한다.
- 에러 문구는 [Error]로 시작해야 한다.
- 다시 입력을 받아야 한다.
❐ Validation Check List
1. 구입 금액
- 문자열
- 숫자 이외의 문자르 입력한 경우
- 입력하지 않는 경우
- 음수
- 변환
- 문자열을 숫자로 변환
- 단위
- 1000원 단위로 입력하지 않은 경우
- 전처리
- 앞, 뒤 공백을 입력한 경우
2. 당첨 번호
- Regex
- 하나도 입력하지 않은 경우
- 숫자 이외의 문자를 입력한 경우
- 1~45 범위 내의 숫자를 입력하지 않은 경우
- 갯수 & 중복
- 6개 미만해서 입력한 경우
- 6개 초과해서 입력한 경우
- 중복된 수를 입력한 경우
- 공백(전처리)
- 구분자로 쉼표(,)를 기준으로 split
- 앞, 뒤 공백 제거
3. 보너스 번호
- Regex
- 하나도 입력하지 않은 경우
- 숫자 이외의 문자를 입력한 경우
- 1~45 범위 내의 숫자를 입력하지 않은 경우
- 1개 초과해서 입력한 경우
- 중복
- 당첨 번호와 중복된 수를 입력한 경우
- 공백(전처리)
- 앞, 뒤 공백을 입력한 경우
❐ Main Logic
- n개의 로또를 순회를 돌면서 당첨 번호를 비교한다.
- 5개가 일치한다면 보너스 번호를 비교한다.
- 일치한 번호의 갯수와 보너스 번호 일치 여부를 바탕으로 등수를 매긴다.
- 로또의 rank를 키 값으로하는 map을 업데이트 해준다.
❐ Domain Modeling
❐ Domain Logic
❐ Business Logic
'우테코 7기 > 3주차' 카테고리의 다른 글
과제를 하면서 알게된 사소한 지식들 (0) | 2024.11.04 |
---|---|
정적 팩토리 메소드 왜 쓰는걸까? (0) | 2024.11.04 |
Map의 computeXxx 메소드를 알아보자. (0) | 2024.11.03 |
EnumMap을 쓰는 이유 (0) | 2024.11.03 |
3주차 회고 (0) | 2024.11.03 |