컴퓨터 이야기
[프로그래밍문제] 풀어보세요~-0-;;
CatchMeIfYouCan
2006. 2. 21. 12:54
다음의 내용을 만족하는 엘리베이터 운영 프로그램을 작성하여라.
1. 10층짜리 팔달관 건물(1층 ~ 10층)이 있고, 거기에 3개의 엘리베이터가 설치되어 있다.
프로그램에서는 3개의 엘리베이터를 모두 관장하여 가장 효율적인 운영을 하여야 한다. 3개의 프로그램이 존재하는 것이 아니다. 단 하나의 프로그램에서 엘리베이터 3개를 관리한다.
2. 각층마다 UP, Down 버튼이 하나씩만 존재한다. 즉, 3개의 엘리베이터는 하나의 버튼에 의하여 운행이 된다. 부연 설명하면, 엘리베이터마다 UP, Down 버튼이 있는 것이 아님.
3. 한 층에서 UP 버튼이나 Down 버튼을 눌렀을 때, 이에 모든 엘리베이터가 버튼이 눌린 층으로 이동하면, 안 된다. 즉 감점이 이루어 진다. 3개의 엘리베이터 중 그 요청을 수행하기에 가장 좋은 엘리베이터만 그 요청에 반응 하면 된다.
4. 버튼이 눌린 층에 엘리베이터가 정지 후에 문이 열리고, 엘리베이터에서 내릴 사람들은 내린 후에 사람들이 엘리베이터에 탄다. 이때, 엘리베이터에 들어오는 사람들은 순차적으로 들어오며 자신의 목적지 층과 자신의 신상정보(몸무게, 나이, 성별등)를 입력한다.
5. 엘리베이터 안에 승차한 사람이 선정한 목적지 층에서 엘리베이터는 정지하여 하며, 그 사람을 내려준다. 이때, 승차한 사람은 중간에 목적지를 변경할 수는 없다.
6. 만약, 엘리베이터에 승차하려는 사람이 엘리베이터 최대 중량(1100KG)을 초과하였을 때에는 아래의 기준을 만족해야 하며, 추가적으로 적당한 규칙(예, 경로우대 또는 여성우대등) 을 세워서 승차하는 사람을 선정하여야 한다. 단, 새롭게 승차하는 사람에 대하여 적용한다, 즉, 이미 다른 층에서 타고 온 사람들은 예외처리된다
A. 엘리베이터에 먼저 들어오는 사람에게 우선권이 주어줘야 한다.
B. 최대한 많은 인원이 엘리베이터에 타야 한다.
7. 엘리베이터에 탑승한 사람의 총 중량이 1000KG을 넘었을 때에는 엘리베이터의 상황을 “만원”으로 설정하고 내리는 사람이 있을 때까지 모든 요청을 무시하고 운행한다.
8. 엘리베이터 1번이 1층에서 4층의 UP 버튼 요청으로 운행을 시작했을 때, 운행 중간에 3층에서 Up 버튼 요청이 일어났고, 3층에서 많은 사람들이 승차하여 만원이 되었고, 그 사람들이 4층에서 내리는 사람이 없을 경우 4층을 무시하고 운행을 해야 한다. 이때 다른 엘리베이터가 4층의 Up 버튼 요청을 수행하여야 한다.
9. 엘리베이터는 승차한 사람이 없고, 각층의 UP, Down 버튼의 요청이 없을 때에는 움직이지 않고 그 자리에 멈추어 있어야 한다.
10. 엘리베이터의 운행에 대하여 “문열기”, “한층이동”, “사람내리기”, “사람타기”, “문닫기” 는 동일한 시간이 걸리는 하나의 스탭으로 간주한다.
11. 모든 엘리베이터는 1층에서부터 시작한다. 즉, 프로그램이 시작되었을 때, 모든 엘리베이터는 1층에 문이 닫힌 상태로 존재한다.
모든 스텝마다 엘리베이터의 상황을 화면에 보여주어야 한다. 출력의 형태는 프로그램 작성자가 알맞게 출력하시오.(각 스텝마다 슬립 함수로 1초씩 쉬어주어야함)
예를 들면, 엘리베이터 1은 현재 4층에 있으면 “문열기” 한 상태이며, 탑승인원은 몇 명이고, 현재 진행방향은 “Up” 이다. 등의 정보를 출력하여야 한다.
단, 프로그램의 설계와 코드작성에서 구조체를 사용할 수 없다. 사용자 정의 함수는 반드시 사용하여야 하며, 사용하지 않은 사람은 감점된다.
1. 10층짜리 팔달관 건물(1층 ~ 10층)이 있고, 거기에 3개의 엘리베이터가 설치되어 있다.
프로그램에서는 3개의 엘리베이터를 모두 관장하여 가장 효율적인 운영을 하여야 한다. 3개의 프로그램이 존재하는 것이 아니다. 단 하나의 프로그램에서 엘리베이터 3개를 관리한다.
2. 각층마다 UP, Down 버튼이 하나씩만 존재한다. 즉, 3개의 엘리베이터는 하나의 버튼에 의하여 운행이 된다. 부연 설명하면, 엘리베이터마다 UP, Down 버튼이 있는 것이 아님.
3. 한 층에서 UP 버튼이나 Down 버튼을 눌렀을 때, 이에 모든 엘리베이터가 버튼이 눌린 층으로 이동하면, 안 된다. 즉 감점이 이루어 진다. 3개의 엘리베이터 중 그 요청을 수행하기에 가장 좋은 엘리베이터만 그 요청에 반응 하면 된다.
4. 버튼이 눌린 층에 엘리베이터가 정지 후에 문이 열리고, 엘리베이터에서 내릴 사람들은 내린 후에 사람들이 엘리베이터에 탄다. 이때, 엘리베이터에 들어오는 사람들은 순차적으로 들어오며 자신의 목적지 층과 자신의 신상정보(몸무게, 나이, 성별등)를 입력한다.
5. 엘리베이터 안에 승차한 사람이 선정한 목적지 층에서 엘리베이터는 정지하여 하며, 그 사람을 내려준다. 이때, 승차한 사람은 중간에 목적지를 변경할 수는 없다.
6. 만약, 엘리베이터에 승차하려는 사람이 엘리베이터 최대 중량(1100KG)을 초과하였을 때에는 아래의 기준을 만족해야 하며, 추가적으로 적당한 규칙(예, 경로우대 또는 여성우대등) 을 세워서 승차하는 사람을 선정하여야 한다. 단, 새롭게 승차하는 사람에 대하여 적용한다, 즉, 이미 다른 층에서 타고 온 사람들은 예외처리된다
A. 엘리베이터에 먼저 들어오는 사람에게 우선권이 주어줘야 한다.
B. 최대한 많은 인원이 엘리베이터에 타야 한다.
7. 엘리베이터에 탑승한 사람의 총 중량이 1000KG을 넘었을 때에는 엘리베이터의 상황을 “만원”으로 설정하고 내리는 사람이 있을 때까지 모든 요청을 무시하고 운행한다.
8. 엘리베이터 1번이 1층에서 4층의 UP 버튼 요청으로 운행을 시작했을 때, 운행 중간에 3층에서 Up 버튼 요청이 일어났고, 3층에서 많은 사람들이 승차하여 만원이 되었고, 그 사람들이 4층에서 내리는 사람이 없을 경우 4층을 무시하고 운행을 해야 한다. 이때 다른 엘리베이터가 4층의 Up 버튼 요청을 수행하여야 한다.
9. 엘리베이터는 승차한 사람이 없고, 각층의 UP, Down 버튼의 요청이 없을 때에는 움직이지 않고 그 자리에 멈추어 있어야 한다.
10. 엘리베이터의 운행에 대하여 “문열기”, “한층이동”, “사람내리기”, “사람타기”, “문닫기” 는 동일한 시간이 걸리는 하나의 스탭으로 간주한다.
11. 모든 엘리베이터는 1층에서부터 시작한다. 즉, 프로그램이 시작되었을 때, 모든 엘리베이터는 1층에 문이 닫힌 상태로 존재한다.
모든 스텝마다 엘리베이터의 상황을 화면에 보여주어야 한다. 출력의 형태는 프로그램 작성자가 알맞게 출력하시오.(각 스텝마다 슬립 함수로 1초씩 쉬어주어야함)
예를 들면, 엘리베이터 1은 현재 4층에 있으면 “문열기” 한 상태이며, 탑승인원은 몇 명이고, 현재 진행방향은 “Up” 이다. 등의 정보를 출력하여야 한다.
단, 프로그램의 설계와 코드작성에서 구조체를 사용할 수 없다. 사용자 정의 함수는 반드시 사용하여야 하며, 사용하지 않은 사람은 감점된다.
-----------
출처 : 친구가보내준거;; 어느대학교 텀이라는-0-;;
건물명을 보아하니...아주대인거 같네요-0-;;
한번 해볼까-_-..근데..마지막에 구조체 쓰지마라는건-_-
왜일까ㅡㅡ;;;구조체 안쓰면;; 열라 귀찮겠다ㅡㅡ;;;