반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
동영상의 길이와, 현재 재생중인 시간, 동영상의 오프닝 시작 시간, 종료 시간, 그리고 10초 전으로 이동, 10초 후로 이동하는 명령어의 배열을 입력 받을 때, 명령어를 모두 처리한 이후에 보고 있는 동영상의 시간을 출력해 주세요
(현재 보는 위치가 오프닝 시간이라면 자동으로 건너뛰어집니다. 또한 10초 전, 후로 이동 기능은 0초와 동영상 길이 까지만 이동 가능합니다)
풀이 방법
우선 string으로 입력 받은 시간을 int로 변화해줄 필요가 있습니다.
int ttoi(string time)
{
int ret = 0;
ret += time[4] - '0';
ret += (time[3] - '0') * 10;
ret += (time[1] - '0') * 60;
ret += (time[0] - '0') * 600;
return ret;
}
string itot(int time)
{
string ret;
ret = to_string(time / 600);
ret += to_string((time % 600) / 60);
ret += ':';
ret += to_string((time % 600 % 60) / 10);
ret += to_string(time % 600 % 60 % 10);
return ret;
}
이후 입력 받은 시간들을 모두 int 로 변환 해줍니다.
int start_op = ttoi(op_start);
int end_op = ttoi(op_end);
int time = ttoi(pos);
time = time >= start_op && time < end_op ? end_op : time;
int videoSize = ttoi(video_len);
이후에 모든 명령어를 실행합니다.
for (string& command : commands)
{
if (command == "next")
time = min(time + 10, videoSize);
else if (command == "prev")
time = max(time - 10, 0);
if (time >= start_op && time <= end_op)
time = end_op;
}
마지막으로 현재 시간을 다시 string으로 변환 후 반환합니다.
return itot(time);
반응형
LIST
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
해커랭크 Matrix Layer Rotation (0) | 2024.10.26 |
---|---|
프로그래머스 석유 시츄 [Lv. 2] (C++) (0) | 2024.10.25 |
프로그래머스 붕대 감기 [Lv. 1] (C++) (0) | 2024.10.25 |
2024 KAKAO WINTER INTERNSHIP 알고리즘 문제 정리 (C++) (2) | 2024.10.24 |
프로그래머스 가장 많이 받은 선물 [Lv. 1 정답률 25%] (C++) (0) | 2024.10.24 |