문제
https://school.programmers.co.kr/learn/courses/30/lessons/340213
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 개요
동영상 재생기를 구현하는 문제로, 사용자가 입력한 명령에 따라 동영상의 재생 위치를 조정하는 기능을 제공합니다. 동영상의 길이, 현재 재생 위치, 오프닝 구간의 시작과 끝 시각이 주어지며, 사용자는 "prev"와 "next" 명령을 통해 재생 위치를 조정할 수 있습니다. 오프닝 구간에 있을 경우, 자동으로 오프닝이 끝나는 위치로 이동해야 합니다. 최종적으로 모든 명령이 수행된 후의 재생 위치를 "mm:ss" 형식으로 반환해야 합니다.
접근 방법
1. 시간 변환 함수 구현:
- 주어진 시간 문자열("mm:ss")을 초 단위의 정수로 변환하는 stringToInt 함수를 구현합니다. 이 함수는 분을 초로 변환하고, 초를 더하여 총 초를 반환합니다.
- 반대로, 초 단위의 정수를 "mm:ss" 형식의 문자열로 변환하는 intToString 함수를 구현합니다. 이 함수는 초를 분과 초로 나누고, 두 자리 형식으로 포맷팅합니다.
2. 초 단위로 위치 및 길이 저장:
- 동영상의 길이, 현재 위치, 오프닝 시작 및 끝 시각을 초 단위로 변환하여 저장합니다. 이를 통해 시간 계산을 쉽게 할 수 있습니다.
3. 명령 처리:
- 주어진 명령 배열을 순회하며 각 명령을 처리합니다.
- 각 명령을 처리하기 전에 현재 위치가 오프닝 구간에 있는지 확인하고, 오프닝 구간에 있다면 오프닝이 끝나는 위치로 이동합니다.
- "next" 명령이 주어지면 현재 위치를 10초 증가시키고, 동영상의 길이를 초과하지 않도록 조정합니다.
- "prev" 명령이 주어지면 현재 위치를 10초 감소시키고, 0초 미만으로 내려가지 않도록 조정합니다.
4. 최종 위치 확인:
- 모든 명령이 처리된 후, 최종 위치가 오프닝 구간에 있는지 다시 확인하고, 필요시 오프닝이 끝나는 위치로 이동합니다.
코드
import java.util.*;
class Solution {
public String solution(String video_len, String pos, String op_start, String op_end, String[] commands) {
String answer = "";
int video_len_i = stringToInt(video_len);
int pos_i = stringToInt(pos);
int op_start_i = stringToInt(op_start);
int op_end_i = stringToInt(op_end);
for(String s : commands) {
if(pos_i >= op_start_i && pos_i <= op_end_i) pos_i = op_end_i;
if(s.equals("next")) {
pos_i += 10;
if(pos_i > video_len_i) pos_i = video_len_i;
} else if(s.equals("prev")) {
pos_i -= 10;
if(pos_i < 0) pos_i = 0;
}
}
if(pos_i >= op_start_i && pos_i <= op_end_i) pos_i = op_end_i;
return intToString(pos_i);
}
public static int stringToInt(String time) {
String[] arr = time.split(":");
return (Integer.parseInt(arr[0])*60) + Integer.parseInt(arr[1]);
}
public static String intToString(int time) {
String a = Integer.toString(time/60);
if(a.length() == 1) a = "0" + a;
String b = Integer.toString(time%60);
if(b.length() == 1) b = "0" + b;
return a + ":" + b;
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [PCCP 기출문제] 4번 / 수레 움직이기 - Java (1) | 2024.11.29 |
---|---|
[프로그래머스] [PCCP 기출문제] 4번 / 수식 복원하기 - Java (0) | 2024.11.26 |
[프로그래머스] 문자열 나누기 - Java (0) | 2024.11.24 |
[프로그래머스] 달리기 경주 - Java (1) | 2024.11.24 |
[프로그래머스] 멀쩡한 사각형 - Java (0) | 2024.11.23 |