강의로 돌아가기
JichangJang

채점 결과 70.8점이 나옵니다.

안녕하세요 카카오 셔틀버스 문제를 풀고있는데 잘 안되네요.

코드를 설명드리겠습니다.
우선, timeminusone 함수는 1분 빼는 함수입니다.

나머지 코드 설명드리겠습니다.

  1. 운행 횟수와 셔틀 운행 간격을 고려하여 마지막 셔틀 버스 출발 시간을 구합니다.
  2. 마지막 셔틀 시간에 탑승할 크루들을 lasttimetable 배열에 추가합니다. 추가할 때 규칙은 다음과 같습니다. timetable을 정렬하고 마지막 크루의 시간부터 확인하며 반복문을 진행합니다. 만약 lasttimetable 배열의 크기가 한 셔틀에 탈 수 있는 최대 크루의 수보다 크거나 같으면 반복문을 멈추고 lasttimetable 배열의 크기가 한 셔틀에 탈 수 있는 최대 크루의 수보다 작으면 마지막 크루의 시간이 마지막 셔틀 시간보다 작거나 같으면 lasttimetable 배열에 추가합니다.

lasttimetable 배열의 크기가 한 셔틀에 탈 수 있는 최대 크루의 수보다 작으면 마지막 셔틀 버스 출발 시간이 answer가 되는 것이고
lasttimetable 배열의 크기가 한 셔틀에 탈 수 있는 최대 크루의 수와 같을때
lasttimetable배열의 마지막 크루의 시간보다 lasttime이 크면 1분 감소 시킵니다.

def time_minus_one(time):
    hh = int(time[0:2])
    mm = int(time[3:])
    mm = mm-1
    if mm < 0:
        mm = 59
        hh -= 1
    return str(hh).zfill(2)+":"+str(mm).zfill(2)

def solution(n, t, m, timetable):
    answer = ""
    timetable.sort()
    if n > 1:
        hh = (n-1)*t // 60
        mm = (n-1)*t % 60
        hh = str(9+hh).zfill(2)
        mm = str(mm).zfill(2)
        lasttime = hh + ":" + mm
    else:
        lasttime = "09:00"
    lasttimetable = list()

    for i in timetable:
        if lasttime >= i:
            if len(lasttimetable) >= m:
                lasttimetable.pop(m-1)
            lasttimetable.append(i)

    answer = lasttime

    if len(lasttimetable) > m:
        pass
    elif len(lasttimetable) < m:
        pass
    else:
        if answer >= lasttimetable[-1]:
            answer = time_minus_one(lasttimetable[-1])
    return answer
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.