학습 목표
-
웹 개발자는 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| | | | ||🁢🁢| | | |
예약대기| | | | || | | | |
----------------------------------