sang5c / kotlin-racingcar

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kotlin-racingcar

Step4 - 자동차 경주(우승자)

기능 요구 사항

  • 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다.
  • 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
  • 자동차 이름은 쉼표(,)를 기준으로 구분한다.
  • 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.

프로그래밍 요구 사항

  • 모든 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in) 로직은 제외
  • UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
  • indent(인덴트, 들여쓰기) depth를 2를 넘지 않도록 구현한다. 1까지만 허용한다.
  • 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다.
  • 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다.

추가 요구사항 분석

  • 자동차는 추가로 이름을 갖는다.
    • 자동차 생성시 이름을 입력 받는다.
    • 자동차의 이름은 쉼표를 통해 구분한다.
    • 자동차의 이름은 1자 이상 5자 이하이다.
  • 자동차가 이동하면 이름을 같이 출력한다.
  • 모든 라운드가 종료된 후 우승자를 선출한다.
    • 우승자는 포지션이 가장 큰 자동차이다.
    • 우승자는 1명 이상이다.

Step3 - 자동차 경주

기능 요구 사항

  • 초간단 자동차 경주 게임을 구현
  • n번의 횟수 동안 m대의 자동차는 전진 또는 정지
    • n과 m은 입력받는다.
  • 무작위 값이 0에서 9 사이에서 4 이상일 경우 전진, 아닌 경우 정지
  • 자동차의 상태를 화면에 출력

프로그래밍 요구 사항

  • 모든 로직에 단위 테스트를 구현한다. 단, UI(System.out, System.in) 로직은 제외
  • 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
  • UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.

요구사항 분석

  • 자동차의 기본 위치는 0이다.
  • 자동차는 조건에 따라 전진 또는 정지한다.
  • 자동차는 여러 대가 존재한다.
  • 자동차는 각각 전진 또는 정지한다.
  • 무작위 값은 0에서 9 사이의 값을 갖는다.
  • 위치는 한 번에 한 칸씩만 이동한다.
  • 전진 규칙은 값이 4 이상일 경우 전진, 아닌 경우 정지이다.

🚀 Step2 - 문자열 계산기

기능 요구사항

  • 문자열 입력을 받아 사칙 연산 수행하는 계산기 구현
  • 우선순위는 입력 순서 (사칙연산 우선순위를 따르지 않는다)
    • 2 + 3 * 4 / 2 = 10

프로그래밍 요구사항

  • 메서드가 너무 많은 일을 하지 않도록 분리하기 위해 노력해 본다.

요구사항 분석

  • 사칙연산 기능을 구현한다.
  • 공백 문자로 입력을 구분한다.
  • 입력 문자 수는 3 이상의 홀수이다. 숫자로 끝나야 하며, 식이 완성되어야 한다.
    • 홀수번째 입력은 숫자이다.
      • 숫자가 아닌 경우 Exception이 발생한다.
    • 짝수번째 입력은 사칙연산 기호이다.
      • +, -, *, /
      • 사칙연산 기호가 아닌 경우 Exception이 발생한다.

About


Languages

Language:Kotlin 100.0%