코딩테스트 연습 - [PCCP 기출문제] 1번 / 동영상 재생기 | 프로그래머스 스쿨 (programmers.co.kr)
1. 10초 미만인 경우의 max값을 구한다.
2. 오프닝 구간 사이에 있는 경우 오프닝 끝으로 계속 보내주는 걸 고려하기
3. 시간이 최소 시간 이하인 경우, 최대 시간 이상인 경우 고려하기
string solution(string video_len, string pos, string op_start, string op_end, vector<string> commands) {
string answer = "";
string end = "";
int m1 = video_len[0] - '0', m2 = video_len[1] - '0', s1 = video_len[3] - '0', s2 = video_len[4] - '0';
s2 -= 9;
if (s2 < 0) { s1--; s2 += 10; };
if (s1 < 0) { m2--; s1 = 5; }
if (m2 < 0) { m1--; m2 = 9; }
end = to_string(m1) + to_string(m2) + ":" + to_string(s1) + to_string(s2);
for (int i = 0; i < commands.size(); i++) {
if (op_start <= pos && pos <= op_end) {
pos = op_end;
}
int m1 = pos[0] - '0', m2 = pos[1] - '0', s1 = pos[3] - '0', s2 = pos[4] - '0';
if (commands[i] == "next") {
string tpos = "";
s1++;
if (s1 >= 6) { m2++; s1 = 0; }
if (m2 >= 10) { m1++; m2 = 0; }
tpos = to_string(m1) + to_string(m2) + ":" + to_string(s1) + to_string(s2);
pos = tpos;
if (tpos >= end)
pos = video_len;
}
else if (commands[i] == "prev") {
string tpos = "";
s1--;
if (s1 < 0) { m2--; s1 = 5; }
if (m2 < 0) { m1--; m2 = 9; }
tpos = to_string(m1) + to_string(m2) + ":" + to_string(s1) + to_string(s2);
pos = tpos;
if (tpos <= "00:09")
pos = "00:00";
}
}
if (op_start <= pos && pos <= op_end) {
pos = op_end;
}
return answer = pos;
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
[백준 실버1] 구간 합 구하기 5 11660번 (1) | 2024.09.28 |
---|---|
프로그래머스 C++ Lv.2 퍼즐게임 (PCCP 기출문제 2번) (0) | 2024.09.24 |
프로그래머스 LV.1 폰켓몬 (0) | 2024.08.17 |
프로그래머스 - LV.1 [1차] 비밀지도 (0) | 2024.08.15 |
백준 6463 팩트 C++ (0) | 2024.05.29 |