코딩테스트

간단 퀴즈 - 택시 승객 시간별 매칭

sogummi 2023. 3. 25. 21:00
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}분")

- 두 번째 코드로 작성한다면 리스트를 섞는 과정이 필요없기 때문에 좀 더 효율적이고 메모리도 절약할 수 있다.