학습 목표

  • 웹 개발자는 VS Code에서 JavaScript 프로그램 구현을 할 수 있고, Node.js로 JavaScript 코드를 실행할 수 있다.

  • 기본 개발 환경을 구성하고 git과 GitHub 서비스를 활용해서 소스 코드를 관리할 수 있다.

사전지식

없음

기능요구사항

부스트캠프 회의실을 관리하는 콘솔 프로그램을 작성하려고 합니다. 문자열 배열로 “시간대와 인원”을 묶어서 제공하면 회의실 시간표를 저장해서 출력하는 프로그램을 작성하세요.

입력

  • 프로그램에서는 표준 입력으로 "시간대-참석인원-회의시간" 형태로 반복해서 입력받으며 회의실별로 시간표를 출력하고, 다시 입력받는 것을 반복한다.

  • 예약 요청은 문자열 배열로 시간대, 회의시간, 참석 인원이 쌍으로 제공된다.

    • 시간대는 오전 AM / 오후 PM 중에 하나

    • 회의 시간은 1시간부터 4시간까지

    • 참석 인원은 2명부터 20명까지

    • 예시) AM-02-1 : 오전 시간대 2명 1시간 / PM-15-2 : 오후 시간대 15명 2시간

출력

  • 출력은 콘솔에 회의실별로 시간표를 채워서 출력한다. (아래 동작 예시 참고)

  • 회의실별로 오전 4칸 / 오후 4칸을 채워진 것으로 표시한다.

  • 채워진 상태와 비워진 상태를 표시한다.

회의실 구성

회의실은 A, B, C 3곳이고 각각 최대 인원이 정해져 있다.

회의실 A

참석 가능한 인원 5명까지

회의실 B

참석 가능한 인원 10명까지

회의실 C

참석 가능한 인원 20명까지

회의실 예약

  • 예약할 때는 인원이 더 적은 회의실부터 우선하여, A > B > C 순으로 예약을 허용한다.

  • 참석 인원이 회의실 인원을 초과하면 예약할 수 없다.

  • 오전이나 오후 4칸이 원하는 시간만큼 남지 않으면 더 이상 회의를 넣을 수 없으며 예약은 실패한다.

제약사항

  • AM/PM 값이 아니거나 시간 범위, 참석인원 입력 범위가 벗어난 항목은 시간표에 반영하지 않는 예외처리가 필요하다.

  • 그 외에 예약이 불가능한 경우는 하단에 예약 대기를 출력한다.

프로그래밍 요구사항

  • 함수를 사용하며, 별도 타입을 선언하지 않아도 된다.

  • 함수 하나가 10줄 이상 넘어가면 하위 함수로 분리하고, 상위 함수는 하위 함수를 호출한다.

  • 함수 선언 이후에 들여쓰기 단계가 3단계를 초과하는 경우는 함수로 분리한다.

  • 입력값을 받기 위해서 표준 입력 방식을 사용해도 되고, 소스코드 파일 안에서 함수를 호출하면서 입력값을 넣어도 된다.

  • 결과는 VS Code 콘솔에 출력되어야 한다.

  • 최종적으로 콘솔에 출력한 결과를 이미지로 캡처한다.

  • 요구사항을 분석해서 스스로 할 일 체크리스트를 README.md에 작성한다.

  • 체크리스트를 하나씩 완료할 때마다 소스와 실행 결과는 gist에 commit 한다. (Push는 한 번만 해도 무방하다.)

예상결과 및 동작예시

최대한 아래 표 형식을 유지하면서 각자 특색있는 출력 형식으로 꾸며도 된다.

  • 출력값은 다음과 같은 형식으로 고정폭 글꼴을 사용해서 출력하는 게 좋다.

예시1) 시간표가 하나일 경우

입력값이 ["AM-03-2"] 이면 3명이니까 5명 회의실 A에 오전에 우선 할당한다.

        |오|전|시|간||오|후|시|간|
----------------------------------
회의실 A|🁢🁢|🁢🁢|  |  ||  |  |  |  |
----------------------------------
회의실 B|  |  |  |  ||  |  |  |  |
----------------------------------
회의실 C|  |  |  |  ||  |  |  |  |

예시2) 여러 회의를 예약한 경우

입력값이 ["AM-02-3", "PM-06-2", "AM-11-2", "PM-15-1", "PM-05-1"] 라면 다음과 같이 시간표를 출력한다.

        |오|전|시|간||오|후|시|간|
----------------------------------
회의실 A|🁢🁢|🁢🁢|🁢🁢|  ||🁢🁢|  |  |  |
----------------------------------
회의실 B|🁢🁢|🁢🁢|  |  ||🁢🁢|🁢🁢|  |  |
----------------------------------
회의실 C|  |  |  |  ||🁢🁢|  |  |  |

예시3) 특정 시간이 중복되는 경우 예약 대기 표시

입력값이 ["AM-02-3", "PM-06-2", "AM-04-2", "AM-11-2", "PM-15-1", "PM-05-1", "PM-08-3"] 라면 다음과 같이 시간표를 출력한다.

        |오|전|시|간||오|후|시|간|
----------------------------------
회의실 A|🁢🁢|🁢🁢|🁢🁢|  ||🁢🁢|  |  |  |
예약대기|🁢🁢|🁢🁢|  |  ||  |  |  |  |
----------------------------------
회의실 B|🁢🁢|🁢🁢|  |  ||🁢🁢|🁢🁢|  |  |
예약대기|  |  |  |  ||🁢🁢|🁢🁢|🁢🁢|  |
----------------------------------
회의실 C|  |  |  |  ||🁢🁢|  |  |  |
예약대기|  |  |  |  ||  |  |  |  |
----------------------------------