본문 바로가기
Algorithm/Programmers

[Programmers] Lv.1 | [PCCP 기출문제] 1번 / 동영상 재생기 | Java

by unknownomad 2025. 11. 6.

문제

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

 

풀이

class Solution {
    public String solution(
    	String video_len, String pos, String op_start, String op_end, String[] commands
    ) {
    	// "mm:ss" -> 초 단위 변환
        int videoSec = Integer.parseInt(video_len.substring(0, 2)) * 60 
        					+ Integer.parseInt(video_len.substring(3, 5));
        int curSec = Integer.parseInt(pos.substring(0, 2)) * 60 
        					+ Integer.parseInt(pos.substring(3, 5));
        int opStartSec = Integer.parseInt(op_start.substring(0, 2)) * 60 
        					+ Integer.parseInt(op_start.substring(3, 5));
        int opEndSec = Integer.parseInt(op_end.substring(0, 2)) * 60 
        					+ Integer.parseInt(op_end.substring(3, 5));

		// 초기 위치가 오프닝 구간이면 오프닝 끝으로 이동
        if (opStartSec <= curSec && curSec <= opEndSec) {
            curSec = opEndSec;
        }
        
        // 명령어 순서대로 처리
        for (String cmd : commands) {
            if (cmd.equals("prev")) {
            	// 10초 이전으로 이동, 음수가 되면 0으로
                curSec -= 10;
                if (curSec < 0) curSec = 0;
            } else if (cmd.equals("next")) {
            	// 10초 이후로 이동, 동영상 길이를 넘으면 마지막 위치로
                curSec += 10;
                if (curSec > videoSec) curSec = videoSec;
            }
            
            // 이동 후 오프닝 구간이면 오프닝 끝으로 이동
            if (opStartSec <= curSec && curSec <= opEndSec) {
                curSec = opEndSec;
            }
        }
        
        // 초 단위를 "mm:ss" 형태로 변환
        String mm = String.format("%02d", curSec / 60);
        String ss = String.format("%02d", curSec % 60);
        return mm + ":" + ss;
    }
}

 

댓글