Quiz) 당신은 Cocoa 서비스를 이용하는 택시 기사님입니다.
50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.
조건1 : 승객별 운행 소요 시간은 5분 ~ 50분 사이의 난수로 정해집니다.
조건2 : 당신은 소요 시간 5분 ~ 15분 사이의 승객만 매칭해야 합니다.
(출력문 예제)
[O] 1번째 손님 (소요시간 : 15분)
[ ] 2번째 손님 (소요시간 : 50분)
[O] 3번째 손님 (소요시간 : 5분)
...
[ ] 50번째 손님 (소요시간 : 16분)
총 탑승 승객 : 2 분
- 문제출처 : 나도 코딩
import random
cnt = 0
for i in range(50):
son_time = list(range(51))
random.shuffle(son_time)
if 5 <= son_time[i] <= 15:
print(f"[O] {i+1}번째 손님 (소요시간 : {son_time[i]}분)")
cnt += 1
else:
print(f"[X] {i+1}번째 손님 (소요시간 : {son_time[i]}분)")
print(f"총 탑승 승객: {cnt}분")
- 처음에 if문에 5~15로 안하고 range에 (5, 51)을 걸어줬더니 46번째 손님까지만 잘 나오고 안나오는 거.. 생각해보니 range로 50까지 걸고 if문에 시간제한 걸어주면 간단히 풀 수 있었다
또 다른 풀이
import random
cnt = 0
for i in range(50):
son_time = random.randrange(5, 51)
if 5 <= son_time <= 15:
print(f"[O] {i+1}번째 손님 (소요시간 : {son_time}분)")
cnt += 1
else:
print(f"[X] {i+1}번째 손님 (소요시간 : {son_time}분)")
print(f"총 탑승 승객: {cnt}분")
- 두 번째 코드로 작성한다면 리스트를 섞는 과정이 필요없기 때문에 좀 더 효율적이고 메모리도 절약할 수 있다.
'코딩테스트' 카테고리의 다른 글
백준 25304 - 영수증 (0) | 2023.03.28 |
---|---|
정올 1291 : 구구단 [Python] (0) | 2023.03.28 |
코딩 퀴즈 - 치킨집 자동 주문 시스템 (0) | 2023.03.23 |
코딩 퀴즈 - 부동산 프로그램 (1) | 2023.03.23 |
프로그래머스 - 모의고사(수포자) (0) | 2023.03.22 |