[프로그래머스/Python] PCCP 기출문제 1번 동영상 재생기 - 파이썬

2025. 2. 22. 02:31·코딩테스트 준비/문제풀이

프로그래머스 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
'코딩테스트 준비/문제풀이' 카테고리의 다른 글
  • [프로그래머스/Python] PCCP 기출문제 3번 충돌위험 찾기 풀이
  • [프로그래머스/파이썬] PCCP 기출문제 2번 퍼즐 게임 챌린지 - 이분탐색
  • [백준] 11404번 플로이드 워셜 알고리즘 설명 - 파이썬 with python
  • [백준] 11657번 타임머신 | 벨만 포드 알고리즘 파이썬 Python
하이야니
하이야니
또 취준..!
  • 하이야니
    하이야니's 스케치
    하이야니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩테스트 준비
        • 알고리즘 개념
        • 문제풀이
      • 파이썬
      • 자바
      • 리눅스
      • C언어
      • 여행
        • 국내
        • 해외
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    벨만포드음수사이클
    벨만포드다익스트라
    pccp기출문제
    백준유클리드호제법
    너비우선탐색파이썬
    프로그래머스거리두기
    프로그래머스pccp기출문제
    프로그래머스파이썬
    벨만포드
    프로그래머스거리두기확인하기파이썬
    거리두기확인하기풀이
    백준bfs
    유클리드호제법파이썬
    다익스트라
    프로그래머스코딩테스트
    거리두기확인하기파이썬
    pccp기출문제1번
    프로그래머스pccp
    프로그래머스거리두기확인하기
    유클리드호제법최대공약수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
하이야니
[프로그래머스/Python] PCCP 기출문제 1번 동영상 재생기 - 파이썬
상단으로

티스토리툴바