πŸ€— [1μ°¨] μ…”ν‹€λ²„μŠ€

Jake_YoungΒ·2020λ…„ 9μ›” 4일
0

μ½”λ”© ν…ŒμŠ€νŠΈ, Coding Test

λͺ©λ‘ 보기
9/23
post-thumbnail

πŸ‘‰λ¬Έμ œ 링크


μ •λ‹΅ μ½”λ“œ 및 ν•΄μ„€

def solution(n, t, m, timetable):
    global bus_time
# 학생듀을 μ‹œκ°„λŒ€μ— 맞좰 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ¦¬ν•œλ‹€
    timetable.sort()
# 0번 학생뢀터 μ‚΄νŽ΄λ³Ό 것이닀
    count = 0
# 전체 λ²„μŠ€ μƒνƒœλ₯Ό buses에 κΈ°λ‘ν•œλ‹€
    buses = [[] for _ in range(n)]
    for bus in range(n):
# ν˜„μž¬ λ²„μŠ€μ˜ μ‹œκ°„μ„ λΆ„μœΌλ‘œ λͺ¨λ‘ ν™˜μ‚°ν•˜μ—¬ κ³„μ‚°ν•œλ‹€
        bus_time = 9 * 60 + bus * t
        for _ in range(m):
# ν˜„μž¬ κ³ λ € 쀑인 ν•™μƒμ˜ μ‹œκ°„λ„ λΆ„μœΌλ‘œ λͺ¨λ‘ ν™˜μ‚°ν•œλ‹€
            hours, mins = map(int, timetable[count].split(":"))
            student_time = hours * 60 + mins
# λ²„μŠ€λ³΄λ‹€ 학생이 λ¨Όμ € ν˜Ήμ€ 같은 μ‹œκ°„μ— μ™”λ‹€λ©΄
            if bus_time >= student_time:
# κ·Έ 학생을 λ²„μŠ€μ— νƒœμš°κ³  λ‹€μŒ 학생(count += 1)을 ν•œλ‹€
                count += 1
                buses[bus].append(student_time)
# λͺ¨λ“  학생이 λ²„μŠ€μ— νƒ”λŠ”μ§€ ν™•μΈν•œλ‹€
                if count == len(timetable):
                    break
# ν˜„μž¬ κ°€μž₯ λ¨Όμ € λ„μ°©ν•œ 학생 μ‘°μ°¨ λ²„μŠ€μ— νƒˆ 수 μ—†λ‹€λ©΄, λ‹€μŒ λ²„μŠ€μ— λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€
            else:
                break
        if count == len(timetable):
            break
# κ°€μž₯ λ§ˆμ§€λ§‰ λ²„μŠ€μ— λͺ¨λ“  승객이 탔닀면
    if len(buses[-1]) == m:
# κ·Έ λ²„μŠ€μ— νƒ‘μŠΉν•œ 학생듀이 λͺ¨λ‘ 같은 μ‹œκ°„μ— μ™”λ‹€λ©΄
        if len(set(buses[-1])) == 1:
# κ·Έ 학생듀보닀 1λΆ„λ§Œ λ¨Όμ € λ‚˜κ°€λ©΄ λœλ‹€
            student_time = buses[-1][0] - 1
        else:
# κ·Έ λ²„μŠ€μ— νƒ‘μŠΉν•œ 학생듀이 μ„œλ‘œ λ‹€λ₯Έ μ‹œκ°„μ— μ™”λ‹€λ©΄ λ§ˆμ§€λ§‰ ν•™μƒλ³΄λ‹€λ§Œ 1λΆ„ 빨리가면 λœλ‹€
            student_time = buses[-1][-1]
            count = 1
            while True:
                count += 1
                if buses[-1][-count] != student_time:
                    student_time -= 1
                    break
# κ°€μž₯ λ§ˆμ§€λ§‰ λ²„μŠ€μ— μžλ¦¬κ°€ λ‚¨μ•˜λ‹€λ©΄ κ·Έ λ²„μŠ€ μ‹œκ°„μ— 맞좰 λ‚˜κ°€λ©΄ λœλ‹€
    else:
        student_time = bus_time

    answer_h, answer_m = map(str, divmod(student_time, 60))
    answer_h = "0" + answer_h if len(answer_h) == 1 else answer_h
    answer_m = "0" + answer_m if len(answer_m) == 1 else answer_m
    return answer_h + ":" + answer_m
profile
μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ 파이썬 그리고 컴퓨터와 λ„€νŠΈμ›Œν¬

0개의 λŒ“κΈ€