티스토리 뷰

지금까지 배운 내용을 복습하기 위한 퀴즈를 드리겠습니다. 직접 한 번 풀어보시고 나서 정답을 확인해주세요.

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))
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함