Skip to content

Conversation

@becherryu
Copy link

@becherryu becherryu commented Oct 27, 2025

🏎️ 자동차 경주

🗒️ 기능 구현 사항

  1. 기본 기능

    • 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.
    • 자동차에 이름을 부여할 수 있으며 전진하는 자동차의 이름을 같이 출력한다.
       실행 결과
       pobi : -
       woni :
       jun : -
      
    • 이름은 ,를 기준으로 구분하며 5자 이하이다.
        경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)
        pobi,woni,jun
      
    • 사용자는 몇 번의 이동을 할 것인지 입력한다.
        시도할 횟수는 몇 회인가요?
        5
      
    • 전진 조건
      • 0 ~ 9 사이의 무작위 값을 구한 뒤 4 이상일 경우
    • 게임이 완료된 후 누가 우승했는지 출력하며 한 명 이상일 수도 있다.
      • 우승자가 여러 명일 경우 ,를 이용해 구분한다.
        최종 우승자 : pobi, jun
        
  2. 입력 예외 처리

    • 잘못된 입력이 들어온 경우 [ERROR]로 시작하는 메시지와 함께 Error를 발생시킨다.
    • 프로그램 종료 시 process.exit()를 사용하지 않는다.
    • 예외 발생 조건:
      • 자동차 이름이 빈 문자열인 경우
        : [ERROR] 자동차 이름은 1자 이상이어야 합니다. 출력 후 종료
      • 자동차 이름이 5자 이상일 경우
        : [ERROR] 자동차 이름은 5자 이하이어야 합니다. 출력 후 종료
      • 중복된 자동차 이름이 있을 경우
        : [ERROR] 중복된 자동차 이름은 작성할 수 없습니다. 출력 후 종료
      • 입력 횟수가 숫자가 아닐 경우
        : [ERROR] 숫자가 아닌 값은 입력할 수 없습니다. 1 이상의 정수를 입력해주세요. 출력 후 종료
      • 입력 횟수가 음수일 경우
        : [ERROR] 시도할 횟수는 음수가 될 수 없습니다. 1 이상의 정수를 입력해주세요. 출력 후 종료
      • 입력 횟수가 소수일 경우
        : [ERROR] 시도할 횟수는 소수가 될 수 없습니다. 1 이상의 정수를 입력해주세요. 출력 후 종료

함수 및 파일 정리

  • model / Car.js
    자동차 경주에 활용할 자동차 객체를 생성합니다.

  • utils / input.js
    사용자에게 입력받는 자동차 이름(getCarName)과 시도 횟수(getRounds)를 관리하는 파일입니다.

  • utils / validate.js
    사용자에게 입력받은 자동차 이름(validateCarName(input))과 시도 횟수(validateRounds(input))가 유효한지 검증하는 파일입니다.

  • utils / race.js
    자동차 경주를 진행(race(cars, rounds))하고 출력하는 함수(printRaceStatus(cars))를 관리하는 파일입니다.

  • utils / winner.js
    최종적으로 우승자를 결정(getWinner(cars))하고 출력하는 함수(printWinners(winners))를 관리하는 파일입니다.

  • utils / constants.js
    에러메시지 상수를 관리하는 파일입니다.

출력 예시

경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)
pobi,woni,jun
시도할 횟수는 몇 회인가요?
5

실행 결과
pobi : -
woni :
jun : -

pobi : --
woni : -
jun : --

pobi : ---
woni : --
jun : ---

pobi : ----
woni : ---
jun : ----

pobi : -----
woni : ----
jun : -----

최종 우승자 : pobi, jun

👀 리뷰어가 무엇을 주목해야할까요

  • 사용자 입력이 잘 되는지
  • 각 상황에 따른 에러 메시지가 적절하게 잘 나오는지
  • 테스트 코드 내용이 적절한지
  • 개선점이 있는지

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