Skip to content

[자동차 경주] 김기윤 미션 제출합니다.#50

Open
GiyunKim00 wants to merge 25 commits into
woowacourse-precourse:mainfrom
GiyunKim00:gykim22
Open

[자동차 경주] 김기윤 미션 제출합니다.#50
GiyunKim00 wants to merge 25 commits into
woowacourse-precourse:mainfrom
GiyunKim00:gykim22

Conversation

@GiyunKim00
Copy link
Copy Markdown

kotlin-racingcar-precourse

목표

  • 쉼표(,)를 구분자로 하는 자동차명 문자열을 입력 받는다.
  • 시도 횟수를 입력 받는다.
  • 게임을 진행한다.
  • 우승자를 판별 및 형식에 맞춰 출력한다.
  • 예외 처리를 수행한다.

입출력

입력

  • 구분자와 문자로 구성된 자동차명 문자열
    • 구분자는 쉼표(,)이다.
    • 자동차명의 길이는 1자 이상, 5자 이하이다.
  • 자연수로 구성된 시도 횟수
    • 시도 횟수는 MAX_INT까지 입력 받는다.
    • 자연수가 아니거나, 음수일 시 예외 처리한다.
    • 0일 시, 실질적인 경주 행위가 수행되었다고 보기 어렵기에 예외 처리한다.

출력

  • 진행
    • pobi : -- 형식으로 출력한다.
  • 결과
    • 최종 우승자 : pobi, jun 형식으로 출력한다.
  • 오류
    • IllegalArgumentException를 발생시킨 뒤 적절한 에러 문구를 반환한다.

필수 요구사항

  • Kotlin 2.2.0에서 실행가능해야하며, 제공된 라이브러리 이외 라이브러리는 사용할 수 없다.
  • camp.nextstep.edu.missionutils 라이브러리에서 제공하는 API를 활용한다.
    • Console API의 readLine()을 활용하여 문자열을 입력받는다.
    • Randoms API의 pickNumberInRange()를 활용하여 Random 값을 추출한다.
  • 파일, 패키지 명과 위치를 유지하며, 코틀린 코드 컨벤션을 준수한다.

코드 구성

  • MVVM 패턴을 활용하여 코드를 작성한다.
  • 함수명을 명확히 한다.
  • SRP를 따르고자 노력한다.

기능 구현

  • "경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"를 출력한다.
  • 제공된 Console API의 readLine()을 활용하여 사용자 입력을 받는다.
    • 문자열의 유효성을 확인한다.
      • 구분자로 문자열을 파싱한다.
      • 입력된 문자열이 요구사항에 부합하지 않는 경우 IllegalArgumentException 예외를 발생시킨다.
    • 숫자의 유효성을 확인한다.
      • 입력된 숫자가 요구사항에 부합하지 않는 경우 IllegalArgumentException 예외를 발생시킨다.
  • 게임을 진행하고, 결과를 판별한다.
  • 요구사항에 따라 결과를 출력한다.
    • 단독 우승의 경우, "최종 우승자 : OOO"를 출력한다.
    • 공동 우승의 경우, "최종 우승자 : OOO, OOO"를 출력한다.

리팩토링

  • 차량 이름 중복 방어 코드 작성
  • 에러를 그대로 throw하도록 작성

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