
[문제 링크]
https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3
[입출력 예]
n |
t |
m |
timetable |
answer |
1 |
1 |
5 |
["08:00", "08:01", "08:02", "08:03"] |
"09:00" |
2 |
10 |
2 |
["09:10", "09:09", "08:00"] |
"09:09" |
2 |
1 |
2 |
["09:00", "09:00", "09:00", "09:00"] |
"08:59" |
1 |
1 |
5 |
["00:01", "00:01", "00:01", "00:01", "00:01"] |
"00:00" |
1 |
1 |
1 |
["23:59"] |
"09:00" |
10 |
60 |
45 |
["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] |
"18:00" |
[소스코드 1차시도 91.7]
| |
| def time_to_minute(time): |
| return (int(time[:2])*60+int(time[3:])) |
| def minute_to_time(minute): |
| return (str(minute//60).zfill(2)+":"+str(minute%60).zfill(2)) |
| |
| def solution(n, t, m, timetable): |
| timetable=list(map(time_to_minute,sorted(timetable,reverse=True))) |
| bus = 540 |
| |
| |
| |
| while(n>1): |
| for i in range(m): |
| if timetable[-1] < bus: |
| timetable.pop() |
| else:break |
| n-=1 |
| bus+=t |
| |
| |
| if not timetable: |
| return minute_to_time(bus) |
| |
| |
| if (timetable[-1]>bus): |
| return minute_to_time(bus) |
| else: |
| |
| while(m>1): |
| if (timetable and timetable[-1]<=bus): |
| timetable.pop() |
| m-=1 |
| else: |
| break |
| |
| print(m, timetable) |
| if m==1 and timetable and timetable[-1]<=bus: return minute_to_time(timetable[-1]-1) |
| else: |
| return minute_to_time(bus) |
[소스코드 2차시도 100]
| |
| def time_to_minute(time): |
| return (int(time[:2])*60+int(time[3:])) |
| def minute_to_time(minute): |
| return (str(minute//60).zfill(2)+":"+str(minute%60).zfill(2)) |
| |
| def solution(n, t, m, timetable): |
| timetable=list(map(time_to_minute,sorted(timetable,reverse=True))) |
| bus = 540 |
| |
| |
| |
| |
| |
| while(n>1): |
| for i in range(m): |
| if timetable[-1] <= bus: |
| timetable.pop() |
| else:break |
| n-=1 |
| bus+=t |
| |
| |
| if not timetable: |
| return minute_to_time(bus) |
| |
| |
| if (timetable[-1]>bus): |
| return minute_to_time(bus) |
| else: |
| |
| while(m>1): |
| if (timetable and timetable[-1]<=bus): |
| timetable.pop() |
| m-=1 |
| else: |
| break |
| |
| print(m, timetable) |
| if m==1 and timetable and timetable[-1]<=bus: return minute_to_time(timetable[-1]-1) |
| else: |
| return minute_to_time(bus) |
댓글을 사용할 수 없습니다.