요구사항
동영상 재생기에서 사용자의 입력값이 모두 끝난 후 현재 영상의 위치(시간)를 "mm:ss" 형식으로 나타내기
입력 값
String video_len | 재생 동영상 총 길이 - "mm:ss" 형식 |
String pos | 재생 시작 시간 - "mm:ss" 형식 |
String op_start | 오프닝 구간 시작 시간 - "mm:ss" 형식 - op_start ≤ 현재 재생 위치 ≤ op_end 인 경우 오프닝 종료 시간으로 이동 됨 |
String op_end | 오프닝 구간 종료 시간 - "mm:ss" 형식 - op_start ≤ 현재 재생 위치 ≤ op_end 인 경우 오프닝 종료 시간으로 이동 됨 |
String[] commands | 사용자의 입력 값을 담은 1차원 문자열 배열 (원소는 "prev" 또는 "next") - "prev"는 10초 전으로 이동 - "next" 는 10초 후로 이동 |
풀이
1. 시간 비교 및 계산을 위해 "mm:ss" 형식의 문자열 시간을 숫자( 분*60 + 초 )로 변환
2. 재생 시작 시간이 오프닝 구간에 포함되어 있는지 확인
-> 오프닝 구간에 포함되어 있다면 현재 재생 시간 = 오프닝 종료 시간 으로 변경
3. 사용자 입력 값( prev/next )에 따라 현재 재생 시간을 10초 더하거나 뺌
-> 계산한 결과가 동영상 총 길이를 초과하는 경우 현재 재생 시간 = 동영상 길이 로 변경
-> 계산한 결과가 0초보다 적은 경우 현재 재생 시간 = 0 으로 변경
-> 오프닝 구간에 포함되어 있다면 현재 재생 시간 = 오프닝 종료 시간 으로 변경
4. 현재 재생 시간(초)을 "mm:ss" 형식 문자열로 변환하여 return
728x90
Java 코드
class Solution {
public String solution(String video_len, String pos, String op_start, String op_end, String[] commands) {
String answer = "";
int videoTime = getTime(video_len);
int posTime = getTime(pos);
int opsTime = getTime(op_start);
int opeTime = getTime(op_end);
if(posTime >= opsTime && posTime < opeTime) posTime = opeTime;
for(String command : commands) {
posTime += command.equals("next")? 10 : -10;
if(posTime > videoTime) posTime = videoTime;
if(posTime < 0) posTime = 0;
if(posTime >= opsTime && posTime < opeTime) posTime = opeTime;
}
answer = getTimeStr(posTime);
return answer;
}
// "mm:ss" 형식 문자열 -> 숫자(sec) 변환
private int getTime(String timeStr) {
return Integer.parseInt(timeStr.split(":")[0]) * 60 + Integer.parseInt(timeStr.split(":")[1]);
}
// 숫자(sec) -> "mm:ss" 형식 문자열 변환
private String getTimeStr(int time) {
return ((time / 60) < 10? "0" : "") + (time / 60)
+ ":"
+ ((time % 60) < 10? "0" : "") + (time % 60);
}
}
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/340213
728x90
반응형
'코딩테스트 > PCCP' 카테고리의 다른 글
[프로그래머스] [PCCP 기출문제] 3번 / 충돌위험 찾기 (Java) (1) | 2025.02.18 |
---|---|
[프로그래머스] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (Java) (2) | 2025.02.17 |
[프로그래머스] [PCCP 기출문제] 3번 / 아날로그 시계 (Java) (0) | 2025.02.17 |
[프로그래머스] [PCCP 기출문제] 2번 / 석유 시추 (Java) (1) | 2025.02.17 |
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 (Java) (0) | 2025.02.17 |