Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[로또] 진찬용 미션 제출합니다. #384

Open
wants to merge 30 commits into
base: main
Choose a base branch
from

Conversation

Jin-Chanyong
Copy link

javascript-racingcar-precourse

기능 요구 사항

  • 로또 번호의 숫자 범위는 1~45까지이다.
  • 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다.
  • 당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다.
  • 당첨은 1등부터 5등까지 있다. 당첨 기준과 금액은 아래와 같다.
  • 1등: 6개 번호 일치 / 2,000,000,000원
  • 2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원
  • 3등: 5개 번호 일치 / 1,500,000원
  • 4등: 4개 번호 일치 / 50,000원
  • 5등: 3개 번호 일치 / 5,000원
  • 로또 구입 금액을 입력하면 구입 금액에 해당하는 만큼 로또를 발행해야 한다.
  • 로또 1장의 가격은 1,000원이다.
  • 당첨 번호와 보너스 번호를 입력받는다.
  • 사용자가 구매한 로또 번호와 당첨 번호를 비교하여 당첨 내역 및 수익률을 출력하고 로또 게임을 종료한다.
  • 사용자가 잘못된 값을 입력할 경우 "[ERROR]"로 시작하는 메시지와 함께 Error를 발생시키고 해당 메시지를 출력한 다음 해당 지점부터 다시 입력을 받는다.

기능 목록 단위

  • 1. 로또 구매 로직 구현

    • 1-1. 사용자로부터 로또 구입 금액 입력받기
      • 입력된 금액이 1000원 단위로 나누어 떨어지지 않거나, 잘못된 입력 시 다시 입력.
    • 1-2. 구입 금액에 따라 구매할 로또 수량을 계산하기
    • 1-3. 구매한 로또 수량 만큼 로또 번호 생성하고 출력하기
      • 로또 번호는 오름차순으로 정렬.
  • 2. 당첨 번호 및 보너스 번호 입력 로직 구현

    • 2-1. 사용자로부터 당첨 번호 6개와 보너스 번호 1개를 입력받기
      • 입력된 번호가 1부터 45사이의 정수가 아니거나, 중복이 있거나, 쉼표로 구분되지 않을 시 다시 입력.
  • 3. 당첨 내역 비교 및 결과 계산

    • 3-1. 구매한 로또 번호와 당첨 번호를 비교하여 당첨 등수 계산하기
    • 3-2. 1등부터 5등까지의 당첨 횟수 출력하기
  • 4. 수익률 계산 및 출력

    • 4-1. 전체 당첨 금액 계산하기.
    • 4-2. 수익률을 계산해 소수점 둘째 자리에서 반올림하여 출력하기.
  • 5. 테스트 코드 작성

    • Jest 를 이용하여, 위 1, 2, 3, 4 가 제대로 기능하는지, 출력값은 정확한지를 테스트한다.

README.md 파일에 이하 내용 추가:
- 기능 요구 사항
- 기능 목록 단위
throwError.js 파일에 이하 내용 추가:
- 에러 발생 및 출력 함수 throwError 을 구현하여, 에러 메시지 포맷 일관화.
README.md 파일에 이하 내용 수정:
- 2-1 하위 내용에 예외 처리 경우 추가
inputValidator.js 파일에 이하 내용 추가:
- 구매 금액 입력값의 예외 처리를 위한 purchaseAmountValidate 함수 추가
throwError.js 파일의 이하 내용 수정:
- throwError 함수가 하나의 기능만을 하기 위해, 에러 출력 기능 제거
userInput.js 파일에 이하 내용 추가:
- 구입 금액 입력 함수 getValidatedPurchaseAmount 함수 추가
- 입력값 유효성 검사 중 오류 발생 시, 오류 메시지 출력 후 재입력
inputValidator.js, userInput.js 파일에 이하 내용 수정:
- 모듈 import 에서 파일 명에 확장자 명 추가
inputValidator.js 파일에 이하 내용 추가:
- 당첨 번호 입력값의 유효성을 검사하는 winningNumbersValidate 함수 추가
inputValidator.js 파일에 이하 내용 추가:
- 보너스 점수 입력값의 유효성 검사 함수 bonusNumberValidate 함수 추가
userInput.js 파일에 이하 내용 추가:
- 당첨 번호를 입력받고, 유효성 검사 후 당첨 번호 배열을 반환하는 getValidatedWinningNumbers 함수 추가
userInput.js 파일에 이하 내용 추가:
- 보너스 번호를 입력받고, 유효성 검사 후 보너스 번호를 반환하는 getValidatedBonusNumber 함수 추가
userInput.js 파일에서 이하 내용 수정:
- getValidatedWinningNumbers 함수에서 입력 안내 메시지를 한줄 띄고 나오도록 수정
Lotto.js 파일에 이하 내용 추가:
- 로또 번호를 생성하는 Lotto 클래스 추가
- 생성된 로또 번호의 유효성 검사 메소드와 번호를 가져오는 메소스 포함
lottoConstants 파일에 이하 내용 추가:
- 로또의 가격, 숫자 갯수, 숫자 최소 최대값 을 포함하는 상수값
- 로또의 등수별 가격을 포함하는 상수값
lottoService.js 파일에 이하 내용 추가:
- 로또들을 생성하고 그 배열을 반환하는 generateLottos 함수 추가
lottoService.js 파일에 이하 내용 추가:
- 생성된 로또들을 하나씩 출력하는 printLottos 함수 추가
lottoUtils.js 파일에서 이하 내용 추가:
- 로또 번호와 당첨 번호 간 일치하는 개수를 반환하는 getMatchedCount 함수 추가
lottoUtils.js 파일에서 이하 내용 추가:
- 수익률을 계산하는 calculateYield 함수 추가
lottoService.js 파일에 이하 내용 추가:
- 로또 등수 별 당첨 횟수를 반환하는 calculateWinsCount 함수 추가
lottoService.js 파일에 이하 내용 추가:
- 로또의 수익률을 계산하는 calculateLottoYield 함수 추가
lottoService.js 파일에 이하 내용 추가:
- 로또 당첨 횟수와 수익률에 대한 결과를 출력하는 printLottoResult 함수 추가
App.js 파일에 이하 내용 추가:
- 로또 발매기 로직 구현
lottoService.js 파일에 이하 내용 수정:
- Lotto 클래스를 import 하지 않아 발생한 오류 수정
App.js 파일에 이하 내용 수정:
- getValidatedBonusNumber 함수를 import 하지 않아 발생한 오류 수정
lottoService.js 파일에서 이하 내용 수정:
- printLottos 함수에서 구매 갯수를 출력하지 않던 것을 수정
App.js, userInput.js 파일에서 이하 내용 수정:
- bonusNumberValidate 에 파라미터가 전해지지 않던 오류 수정
lottoService.js 파일에서 이하 내용 수정:
- 배열을 그대로 출력하여 출력값이 테스트 케이스와 일치하지 않는 내용 수정
Lotto.js, LottoTest.js 파일에서 이하 내용 수정:
- 로또 클래스의 테스트에서 예외 오류가 발생하지 않던 오류를 수정
ApplicationTest.js 파일에 이하 내용 추가:
- 유효하지 않은 값을 입력한 경우의 테스트 케이스 추가
README.md 파일에서 이하 내용 수정:
- 테스트 결과에 따른 완료된 기능 목록 단위 체크
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