새소식

Computer Science/코딩테스트 문제 풀이

[N시간만에 끝내는 Python 코딩테스트] 5편 2018 카카오 코딩테스트 4번 셔틀버스

  • -

https://school.programmers.co.kr/learn/courses/30/lessons/17678

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

https://www.youtube.com/watch?v=VjkhMMVU3QQ

 

 

버스는 n번 운행을 하며 

m명까지 태울 수 있고 

t분 마다 버스가 온다. 

 

크루들 도착 시간을 정렬한다. 

현재 버스 출발 타임에서 다음 버스 출발 타임까지 

기다리는 사람들에서 가장 먼저 와서 기다린 사람부터 버스에 넣어주고 

마지막 버스 떠나는 시간 전까지 타는 사람이 기다린 시간보다 1초 더 빨리 와줘야 한다

 

def solution(n, t, m, timetable):
    
    timetable = sorted([int(i[:2])*60 + int(i[3:]) for i in timetable]) # 분으로 통일해서 정렬 
    
    con_time = 540  # 9*60 + 0 = 540 
    bus_time = 540  # 9시
    # get_bus_people = []
    
    for _ in range(n):
        for _ in range(m):
            # 대기하는 사람들이 있고 가장 먼저 대기한 사람이 셔틀버스 시간보다 먼저 와 있어야함 
            if timetable and timetable[0] <= bus_time:   
                # get_bus_people.append(timetable.pop(0)) # 버스에 가장 먼저 온 사람 부터 넣는다 
                con_time = timetable.pop(0) - 1         # 콘이 가장 앞에 기다렸던 사람보다 일찍 와서 기다려야함 
            else:                                   # 기다리는 사람이 없거나 또는 가장 일찍 기다리는 사람이 현재 버스시간보다 나중에 오면
                con_time = bus_time                 # 콘은 그냥 지금 셔틀 버스 시간에 가서 타면 됨     
        
        bus_time += t   # 버스가 t 간격으로 운영됨 
    
    answer = f'{str(con_time//60).zfill(2)}:{str(con_time%60).zfill(2)}'
    return answer

if __name__ == '__main__':
    
    n=1
    t=1
    m=5
    timetable = ["08:00", "08:01", "08:02", "08:03"]
    
    print(solution(n, t, m, timetable))
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.