반응형
3029번: 경고
첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간
www.acmicpc.net
문자열을 처리하는 문제였습니다.
풀이방법
* 정인이는 1초 ~ 24시간 사이를 기다릴 수 있습니다. 따라서 시간이 같으면 24시간을 기다려야합니다.
* 시 : 분 : 초 이렇게 출력시 시간부분이 24이상의 숫자가 출력되서는 안됩니다.
Code
#include <bits/stdc++.h>
using namespace std;
int nowTime[3], doTime[3];
int sec1,sec2,waitTime;
string getAns(){
string tmp ="";
if(waitTime / 3600 < 10) tmp += "0";
if(waitTime / 3600 >= 24) {
int newTime = waitTime/3600 - 24;
if(newTime < 10) tmp += "0";
tmp += to_string(newTime) + ":";
}
else tmp += to_string(waitTime / 3600) + ":";
waitTime %= 3600;
if(waitTime / 60 < 10) tmp += "0";
tmp += to_string(waitTime / 60) + ":";
waitTime %= 60;
if(waitTime < 10) tmp +="0";
tmp += to_string(waitTime);
return tmp;
}
int main(){
scanf("%d:%d:%d",&nowTime[0],&nowTime[1],&nowTime[2]);
scanf("%d:%d:%d",&doTime[0],&doTime[1],&doTime[2]);
sec1 = nowTime[0] * 3600 + nowTime[1] * 60 + nowTime[2];
sec2 = doTime[0] * 3600 + doTime[1] * 60 + doTime[2];
if(sec1==sec2) cout << "24:00:00\n";
else {
waitTime = 24 * 3600 - sec1 + sec2;
cout << getAns();
}
}
Test Case
몇 가지 테스트 케이스를 작성해봤습니다.
09:23:49
10:48:59
01:25:10
00:00:00
00:00:00
24:00:00
08:00:01
08:00:02
00:00:01
08:00:02
08:00:01
23:59:59
'Algorithm > String' 카테고리의 다른 글
(C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 영어 끝말잇기 (0) | 2021.04.03 |
---|---|
(C++) - 백준(BOJ) 1213번 : 팰린드롬 만들기 답 (0) | 2021.03.22 |
(C++) - 백준(BOJ) 9933번 : 민균이의 비밀번호 (0) | 2021.03.18 |
(Javascript) - 프로그래머스(연습문제) : 다음 큰 숫자 (0) | 2021.03.05 |
(c++) - 프로그래머스(2021 KAKAO BLIND RECRUITMENT) : 신규 아이디 추천 (0) | 2021.03.05 |