ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 셔틀버스
    코테 준비/구현 2023. 3. 2. 21:47

    오답  

    while문으로 안하고 for문으로 돌리게 되면 

    10, 25, 1, ["09:00", "09:10", "09:20", "09:30", "09:40", "09:50", "10:00", "10:10", "10:20", "10:30", "10:40", "10:50"]

    이런 테스트 케이스를 통과하지 못한다. 왜냐하면 크루가 탈 수 있는 경우에만 다음 크루원으로 넘어가야하는데 for문을 쓰게 되면 크루가 탈 수 없어도 무조건 timetable 리스트를 끝까지 돌게 되기 때문이다.

    import datetime
    def solution(n, t, m, timetable):
        shuttle=[540+t*i for i in range(n)]
        time=[]
        for i in timetable:
            time.append(int(i[0:2])*60+int(i[3:]))
        time.sort()
        answer=0
        for i in shuttle:
            count=m
            for j in time: #이부분에서 테케를 통과 못함
                if j<=i and count>0: # 크루의 도착시간이 셔틀시간보다 빠르고 자리가 남아 있으면
                    count-=1
            if count>0:
                answer=i
            else:
                answer=j-1
        return format(answer//60,'02')+":"+format(answer%60,'02')

    정답

    import datetime
    def solution(n, t, m, timetable):
        shuttle=[540+t*i for i in range(n)]
        time=[]
        for i in timetable:
            time.append(int(i[0:2])*60+int(i[3:]))
        time.sort()
        answer=0
        j=0
        for i in shuttle:
            count=m
            while j<len(time) and time[j]<=i and count>0: # 크루의 도착시간이 셔틀시간보다 빠르고 자리가 남아 있으면
                    count-=1
                    j+=1 #다음 크루로 넘어감
            if count>0:
                answer=i
            else:
                answer=time[j-1]-1
        return format(answer//60,'02')+":"+format(answer%60,'02')
Designed by Tistory.