본문 바로가기

Python

(Python3) - 프로그래머스(PCCP_기출문제) : 1번 동영상 재생기

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/340213

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

구현 문제였습니다

📕 풀이방법

📔 입력 및 초기화

1. 정답 변수 answer를 선언 후 ''로 초기화합니다.2. 초로바꾸는 함수 get_total_sec를 선언해주고 video_len을 해당 함수를 사용해 반환된 값을 total_sec에 저장합니다.

📔 풀이과정

1. 현재 pos가 op_start와 op_end 사이라면 pos를 op_end로 저장해줍니다.

2, pos_sec를 선언해 pos를 "초"로 바꿔줍니다.

3. commands에 대해 for loop를 수행하며 다음을 진행합니다.

  3-1. 현재 command가 next라면 pos_sec을 10더한 뒤 pos_sec가 total_sec을 넘어가는지 확인하고 넘어간다면 pos_sec을 total_sec에 넣어줍니다.

  3-2. 현재 command가 prev라면 pos_sec을 10뺀 뒤 pos_sec가 0미만인지 확인하고 그렇다면 0으로 pos_sec을 재할당합니다.

  3-3. 현재 pos_sec이 opening구간이라면 pos_sec을 op_end로 넘깁니다.

4. pos_sec을 각각 분, 초로 변환해 answer에 저장합니다. 분 또는 초가 한 자리 수인 경우 앞에 "0"을 붙여줍니다.

📔 정답 출력 | 반환

answer를 반환합니다.


📕 Code

📔 Python3

def get_total_sec(str):
    return int(str[0:2])*60 + int(str[3:])

def solution(video_len, pos, op_start, op_end, commands):
    answer = ''
    total_sec = get_total_sec(video_len)
    if op_start <= pos and pos <= op_end:
        pos = op_end
    pos_sec = get_total_sec(pos)
    for command in commands:
        if command == "next":
            pos_sec += 10
            if total_sec < pos_sec:
                pos_sec = total_sec
        elif command == "prev":
            pos_sec -= 10
            if pos_sec < 0:
                pos_sec = 0
        if get_total_sec(op_start) <= pos_sec and pos_sec <= get_total_sec(op_end):
            pos_sec = get_total_sec(op_end)
            
    min = str(pos_sec // 60)
    if len(min) < 2:
        min = "0" + min
        
    sec = str(pos_sec % 60)
    if len(sec) < 2:
        sec = "0" + sec
        
    answer = min + ":" + sec
    
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.