[PCCP 기출문제] 동영상 재생기

풀이 방법

문제가 뭔가 길긴 한데 그냥 귀찮은 문제입니다. 어렵진 않아요. map과 split을 사용할 수 있고 예외 케이스만 잘 막아주면 무난하게 풀리는 문제입니다.

def solution(video_len, pos, op_start, op_end, commands):
    # 문자열을 초로 변환
    def to_sec(t):
        m, s = map(int, t.split(":"))
        return m * 60 + s
    
    # 초를 문자열로 변환
    def to_str(sec):
        m = sec // 60
        s = sec % 60
        if m < 10:
            m = f'0{m}'
        if s < 10:
            s = f'0{s}'
            
        return f"{m}:{s}"

    video = to_sec(video_len)
    now = to_sec(pos)
    os_ = to_sec(op_start)
    oe_ = to_sec(op_end)

    # 커맨드 실행
    for cmd in commands:
        # 오프닝에 걸쳐 있으면 점프
        if os_ <= now <= oe_:
            now = oe_

        if cmd == "next":
            now += 10
        else:  # "prev"
            now -= 10

        # 0보다 작으면 0으로 보정
        if now < 0:
            now = 0
        # 영상 길이 초과하면 끝으로 고정
        if now > video:
            now = video

    # 마지막 위치도 오프닝 구간에 걸치면 엔딩 시점으로
    if os_ <= now <= oe_:
        now = oe_

    # 영상 끝을 넘기면
    if now >= video:
        return video_len
    return to_str(now)
반응형