반응형
동영상 재생기
문제 설명
당신은 동영상 재생기를 만들고 있습니다.
당신의 동영상 재생기는 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 함수를 완성해 주세요.
제한 사항
video_len
의 길이 =pos
의 길이 =op_start
의 길이 =op_end
의 길이 = 5video_len
,pos
,op_start
,op_end
는 "mm
:ss
" 형식으로mm
분ss
초를 나타냅니다.- 0 ≤ mm ≤ 59
- 0 ≤ ss ≤ 59
- 분, 초가 한 자리일 경우 0을 붙여 두 자리로 나타냅니다.
- 비디오의 현재 위치 혹은 오프닝이 끝나는 시각이 동영상의 범위 밖인 경우는 주어지지 않습니다.
- 오프닝이 시작하는 시각은 항상 오프닝이 끝나는 시각보다 전입니다.
- 1 ≤ commands의 길이 ≤ 100
commands
의 원소는 "prev" 혹은 "next"입니다.- "prev"는 10초 전으로 이동하는 명령입니다.
- "next"는 10초 후로 이동하는 명령입니다.
입출력 예
아이디어
- LocalDate 로 변환 or 단위 통일 (분:초 -> 초로 변환) 중 초로 변환하는게 심플한듯 하다.
- 오프닝을 스킵하는 부분을 매번 체크해야 한다.
- 다시 문자열 분:초 로 변환시
floor
처리 주의
JAVA 풀이
class Solution {
public String solution(String video_len, String pos, String op_start, String op_end, String[] commands) {
String answer = "";
int p = toSecond(pos);
int s = toSecond(op_start);
int e = toSecond(op_end);
int v = toSecond(video_len);
if (p >= s && p <= e) {
p = e;
}
for (String command: commands) {
if (command.equals("prev")) {
p = Math.max(p - 10, 0);
} else {
p = Math.min(p + 10, v);
}
if (p >= s && p <= e) {
p = e;
}
}
return toStringTime(p);
}
public int toSecond(String time) {
String[] tmp = time.split(":");
int m = Integer.parseInt(tmp[0]) * 60;
int s = Integer.parseInt(tmp[1]);
return m + s;
}
public String toStringTime(int p) {
String m = String.format("%02d", (int) Math.floor((double) p / 60));
String s = String.format("%02d", p % 60);
return m + ":" + s;
}
}
반응형
'알고리즘' 카테고리의 다른 글
[LEETCODE] 706. Design HashMap (1) | 2024.10.09 |
---|---|
[프로그래머스] - 숫자 변환하기 JAVA 풀이 (0) | 2024.10.08 |
[프로그래머스] PCCP 기출문제 - 붕대 감기 JAVA 풀이 (0) | 2024.10.04 |
[프로그래머스] 정수를 나선형으로 배치하기 JAVA 풀이 (0) | 2024.10.02 |
[BOJ-1641] 도서관 JAVA 풀이 (0) | 2024.09.30 |