주녘공부일지

[프로그래머스 C#] Lv.1 동영상 재생기 (PCCP 기출문제 1번) 본문

CodingTest/Programmers Lv.1

[프로그래머스 C#] Lv.1 동영상 재생기 (PCCP 기출문제 1번)

주녘 2024. 9. 22. 20:43

https://school.programmers.co.kr/learn/courses/30/lessons/340213?language=csharp

 

프로그래머스

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

programmers.co.kr

 

1. 정답코드 및 핵심 아이디어, 유의사항

동영상 재생기 문제

- 현재 재생 중인 시간에서 10초 후, 10초 전 으로 넘어가는 명령어를 받음

- 현재 재생 위치가 오프닝 구간인 경우 자동으로 오프닝이 끝나는 위치로 이동

 

코드 참조

using System;

public class Solution 
{
    public int GetTime(string str)
    {
        string[] strs = str.Split(':');
        int minute = int.Parse(strs[1]);
        minute += int.Parse(strs[0]) * 60;
        return minute;
    }

    public string solution(string video_len, string pos, string op_start, string op_end, string[] commands) 
    {
        int maxTime = GetTime(video_len);
        int opStartTime = GetTime(op_start);
        int opEndTime = GetTime(op_end);
        int currTime = GetTime(pos);

        if(opStartTime <= currTime && currTime <= opEndTime)
            currTime = opEndTime;
        
        for(int i = 0; i < commands.Length; i++)
        {
            if(commands[i] == "next")
                currTime += 10;
            else // prev
                currTime -= 10;
            
            if(currTime < 0)
                currTime = 0;
            else if(currTime > maxTime)
                currTime = maxTime;
            
            if(opStartTime <= currTime && currTime <= opEndTime)
                currTime = opEndTime;
        }
        
        return $"{(currTime / 60).ToString("D2")}:{(currTime % 60).ToString("D2")}";
    }
}