[백준 28840] Как покормить дракона (C#, C++) - soo:bak
작성일 :
문제 링크
28840번 - Как покормить дракона
설명
오늘 먹이는 시각과 내일 먹이는 시각이 주어질 때, 경과 시간을 구하는 문제입니다.
내일 시각까지의 경과 시간은 항상 하루를 넘기므로 1440에서 오늘 시각을 빼고 내일 시각을 더합니다.
접근법
먼저 HH:MM 형식을 분 단위로 변환합니다.
이후 1440에서 오늘 시각을 빼고 내일 시각을 더해 경과 시간을 구합니다.
결과를 시와 분으로 나누어 두 자릿수 형식으로 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
class Program {
static int ToMinutes(string s) {
var hh = int.Parse(s.Substring(0, 2));
var mm = int.Parse(s.Substring(3, 2));
return hh * 60 + mm;
}
static void Main() {
var s1 = Console.ReadLine()!;
var s2 = Console.ReadLine()!;
var t1 = ToMinutes(s1);
var t2 = ToMinutes(s2);
var diff = 1440 - t1 + t2;
var h = diff / 60;
var m = diff % 60;
Console.WriteLine($"{h:D2}:{m:D2}");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;
int toMinutes(const string& s) {
int hh = (s[0] - '0') * 10 + (s[1] - '0');
int mm = (s[3] - '0') * 10 + (s[4] - '0');
return hh * 60 + mm;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string a, b; cin >> a >> b;
int t1 = toMinutes(a);
int t2 = toMinutes(b);
int diff = 1440 - t1 + t2;
int h = diff / 60;
int m = diff % 60;
cout << setfill('0') << setw(2) << h << ":" << setw(2) << m << "\n";
return 0;
}