프로그래머스 PCCP 기출문제 1번으로 난이도는 레벨1이다.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다. 각 기능이 수행하는 작업은 다음과 같습니다.
- 10초 전으로 이동: 사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.
- 10초 후로 이동: 사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.
- 오프닝 건너뛰기: 현재 재생 위치가 오프닝 구간(op_start ≤ 현재 재생 위치 ≤ op_end)인 경우 자동으로 오프닝이 끝나는 위치로 이동합니다.
동영상의 길이를 나타내는 문자열 video_len, 기능이 수행되기 직전의 재생위치를 나타내는 문자열 pos, 오프닝 시작 시각을 나타내는 문자열 op_start, 오프닝이 끝나는 시각을 나타내는 문자열 op_end, 사용자의 입력을 나타내는 1차원 문자열 배열 commands가 매개변수로 주어집니다. 이때 사용자의 입력이 모두 끝난 후 동영상의 위치를 "mm:ss" 형식으로 return 하도록 solution 함수를 완성해 주세요.
풀이
사실 문제를 읽어보면 헷갈리거나 이해하기 어려운 부분은 없는 듯하다.
분에 60을 곱해서 초로 변경하고 주어진 문제를 그대로 구현했고
다만, 입출력 예 #2와 #3을 보면 오프닝 구간인지 앞, 뒤로 확인을 해줘야 했다.
정해진 solution 함수 인자값을 바꿔도 되는지 한번 시도해 봤는데 잘 돌아가서 기분이 좋았다.
코드
def solution(*args):
args_list = []
for i, mmss in enumerate(args):
if i == 4:
args_list.append(mmss)
break
tmp = list(map(int, mmss.split(':')))
args_list.append(tmp[0]*60 + tmp[1])
video_len = args_list[0]
pos = args_list[1]
op_start = args_list[2]
op_end = args_list[3]
commands = args_list[4]
for command in commands:
if op_start <= pos and pos < op_end:
pos = op_end
if command == "prev":
pos -= 10
if pos < 0:
pos = 0
else:
pos += 10
if pos > video_len:
pos = video_len
else:
if op_start <= pos and pos < op_end:
pos = op_end
return format(pos//60,'02')+':'+format(pos%60,'02')
'코딩테스트 준비 > 문제풀이' 카테고리의 다른 글
[프로그래머스/Python] PCCP 기출문제 3번 충돌위험 찾기 풀이 (0) | 2025.02.24 |
---|---|
[프로그래머스/파이썬] PCCP 기출문제 2번 퍼즐 게임 챌린지 - 이분탐색 (0) | 2025.02.23 |
[백준] 11404번 플로이드 워셜 알고리즘 설명 - 파이썬 with python (0) | 2025.02.20 |
[백준] 11657번 타임머신 | 벨만 포드 알고리즘 파이썬 Python (0) | 2025.02.20 |
[백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python (0) | 2025.02.14 |