반응형
[ 문제 ]
도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는다. 정확하게 24시간이 되는 순간이 아니면 잡지 않는 CTU 특수요원이다.
2008년 3월 3일 월요일, CTU는 새학기에 맞춰 핵폭탄을 날리겠다는 테러 정보를 입수했다. CTU에서는 특수요원 도현이에게 이 임무를 맡겼다. CTU의 프로그래머 준규는 이 사건의 배후가 김선영이란 것을 해킹을 통해 밝혀내었다.
도현이는 선영이를 임무를 시작한지 정확하게 24시간이 되는 순간에 잡으려고 한다.
만약 지금 시간이 13:52:30이고, 임무를 시작한 시간이 14:00:00 이라면 도현이에게 남은시간은 00:07:30 이다.
모든 시간은 00:00:00 ~ 23:59:59로 표현할 수 있다. 입력과 출력에 주어지는 모든 시간은 XX:XX:XX 형태이며, 숫자가 2자리가 아닐 경우에는 0으로 채운다.
도현이가 임무를 시작한 시간과, 현재 시간이 주어졌을 때, 도현이에게 남은 시간을 구하는 프로그램을 작성하시오.
[ 코드 ]
1. 내 코드
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
int[] s1 = sr.ReadLine().Split(':').Select(int.Parse).ToArray();
int H1 = s1[0];
int M1 = s1[1];
int S1 = s1[2];
int[] s2 = sr.ReadLine().Split(':').Select(int.Parse).ToArray();
int H2 = s2[0];
int M2 = s2[1];
int S2 = s2[2];
int Hour = H2 - H1;
int Minute = M2 - M1;
int Second = S2 - S1;
if (Second < 0)
{
Minute--;
Second += 60;
}
if (Minute < 0)
{
Hour--;
Minute += 60;
}
if (Hour < 0)
{
Hour += 24;
}
sw.Write($"{Hour:D2}:{Minute:D2}:{Second:D2}");
sw.Flush();
sw.Close();
sr.Close();
2. 다른 사람 코드
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[] t = sr.ReadLine().Split(':');
int time = int.Parse(t[0]) * 3600 + int.Parse(t[1]) * 60 + int.Parse(t[2]);
string[] t1 = sr.ReadLine().Split(':');
int time1 = int.Parse(t1[0]) * 3600 + int.Parse(t1[1]) * 60 + int.Parse(t1[2]);
if (time > time1)
{
time1 += 24 * 60 * 60;
}
int num = time1 - time;
int a = num / 3600; num %= 3600;
int b = num / 60; num %= 60;
int c = num;
sw.Write("{0:D2}:{1:D2}:{2:D2}", a, b, c);
sw.Flush();
sw.Close();
sr.Close();
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1408
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 14720번 우유 축제 (0) | 2024.03.07 |
---|---|
[C#] 백준 10162번 전자레인지 (0) | 2024.03.06 |
[C#] 백준 13909번 창문 닫기 (0) | 2024.03.04 |
[C#] 백준 4948번 베르트랑 공준 (0) | 2024.03.03 |
[C#] 백준 4134번 다음 소수 (0) | 2024.03.03 |