티스토리 뷰
지금까지 배운 내용을 복습하기 위한 퀴즈를 드리겠습니다. 직접 한 번 풀어보시고 나서 정답을 확인해주세요.
Quiz) 당신은 Cocoa 서비스를 이용하는 택시 기사님입니다. 50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오. 조건1 : 승객별 운행 소요 시간은 5분 ~ 50분 사이의 난수로 정해집니다. 조건2 : 당신은 소요 시간 5분 ~ 15분 사이의 승객만 매칭해야 합니다. (출력문 예제) [O] 1번째 손님 (소요시간 : 15분) [ ] 2번째 손님 (소요시간 : 50분) [O] 3번째 손님 (소요시간 : 5분) ... [ ] 50번째 손님 (소요시간 : 16분) 총 탑승 승객 : 2 분 |
이번 퀴즈는 총 50명의 승객에 대해 예상 소요 시간 정보를 확인하여 조건에 맞는 경우에만 매칭하여 탑승하는 프로그램을 작성하는 것입니다. 출력 결과는 50명의 승객 모두에 대해 출력하되 매칭된 경우 [O] 로, 매칭되지 않은 경우 [ ] 로 하며 해당 승객의 예상 소요 시간 정보도 포함하여 출력합니다. 마지막 줄에는 총 탑승 승객 수를 적어주면 됩니다.
출력문 예제에서는 1번째 손님과 3번째 손님이 각각 소요 시간 15분, 5분으로 주어진 조건에 만족하므로 [O] 로 표시되었습니다. 난수를 이용한 프로그램이기 때문에 실행 결과는 매번 달라질 수 있다는 점 주의해주세요.
▼ 해설 보기
조건1 에서 운행 소요 시간은 난수로 정해져야 하므로 먼저 랜덤 모듈 사용을 위한 import 를 합니다.
from random import *
마지막 줄에 총 탑승 승객 수를 출력하기 위해서는 승객이 매칭될 때마다 어딘가 값을 저장해야 하므로 코드 윘쪽에서 탑승 승객 수 정보를 의미하는 카운트 변수 cnt 를 선언하고 기본값은 0 으로 지정합니다.
cnt = 0 # 총 탑승 승객 수
퀴즈에서 총 50명의 승객이라고 했으니 50번 반복하는 for 문을 이용하고, 출력 결과에는 1번째 손님, 2번째 손님, ... 과 같이 숫자 정보를 출력해야 하므로 반복대상은 연속된 정수를 위해 range() 를 이용하겠습니다. 반복문 안에서는 각 승객마다 5분 ~ 50분 사이의 운행 소요 시간 값을 난수로 뽑아야 하므로 시간 정보를 저장하는 time 변수를 두고 randrange() 함수를 이용하면 되겠네요.
for i in range(1, 51): # 총 50분의 승객
time = randrange(5, 51) # 5분 ~ 50분 사이의 소요 시간
... # 다음 코드가 작성될 위치
이제 time 값을 비교하여 조건2에 제시된 5분 ~ 15분 사이의 승객만 매칭하겠습니다. 조건에 맞으면 매칭을 시키고 매칭 정보를 출력 후 총 탑승 승객 수를 증가시키고, 조건에 맞지 않으면 그냥 매칭 실패 정보만 출력하면 됩니다.
for i in range(1, 51): # 총 50분의 승객
time = randrange(5, 51) # 5분 ~ 50분 사이의 소요 시간
if 5 <= time <= 15: # 5분 ~ 15분 사이의 손님의 경우 매칭 성공
print("[O] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 성공 정보 출력
cnt += 1 # 총 탑승 승객 수 증가 처리
else: # 매칭 실패한 경우
print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 실패 정보 출력
마지막으로 for 문 밑에 총 탑승 승객 정보를 출력해주는 문장 하나만 더 넣어주겠습니다.
print("총 탑승 승객 : {0}분".format(cnt))
전체 코드는 다음과 같습니다.
from random import *
cnt = 0 # 총 탑승 승객 수
for i in range(1, 51): # 총 50분의 승객
time = randrange(5, 51) # 5분 ~ 50분 사이의 소요 시간
if 5 <= time <= 15: # 5분 ~ 15분 사이의 손님의 경우 매칭 성공
print("[O] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 성공 정보 출력
cnt += 1 # 총 탑승 승객 수 증가 처리
else: # 매칭 실패한 경우
print("[ ] {0}번째 손님 (소요시간 : {1}분)".format(i, time)) # 실패 정보 출력
print("총 탑승 승객 : {0}분".format(cnt))
'파이썬 강의 > 기본편' 카테고리의 다른 글
[파이썬 기본편] 7-2.전달값과 반환값 (7) | 2021.02.22 |
---|---|
[파이썬 기본편] 7-1.함수 (3) | 2021.02.21 |
[파이썬 기본편] 6-5.한 줄 for (2) | 2021.02.19 |
[파이썬 기본편] 6-4.continue 와 break (3) | 2021.02.18 |
[파이썬 기본편] 6-3.while (2) | 2021.02.17 |
- Total
- Today
- Yesterday
- 나도코딩
- game
- 아나콘다
- 코랩
- GUI
- repl.it
- Unity
- onlineclass
- 환경설정
- 파이썬
- 파이게임
- Xcode
- Mac
- coloso
- c언어
- Colab
- Visual Studio Code
- 주피터노트북
- pycharm
- 비주얼 스튜디오 코드
- Tkinter
- ChatGPT
- 행맨
- 챗GPT
- pygame
- Coding
- vscode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |