반응형
https://school.programmers.co.kr/learn/courses/30/lessons/340213
구현 문제였습니다
📕 풀이방법
📔 입력 및 초기화
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
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Python' 카테고리의 다른 글
(Python) - 입출력 시간초과 해결법 (0) | 2021.01.22 |
---|---|
(Python 오류) - TypeError : list indices must be integers or slices, not float (2) | 2019.03.27 |
파이썬(python)-백준(baekjoon)(BaekJoon)코딩 10430번:나머지 답 (0) | 2016.10.04 |
Day _03_04_파일 읽는 법:with open과 as (2) | 2016.10.02 |
print(i , end = ' ')가 안될 때 (0) | 2016.10.01 |