[백준 6812] Good times (C#, C++) - soo:bak
작성일 :
문제 링크
설명
캐나다 도시 Ottawa
의 시간이 주어졌을 때,
각 도시별 시차가 주어진 문제의 표를 바탕으로 다른 도시들의 시간을 출력하는 문제입니다.
24
시간을 기준으로 HHMM
형식으로 출력해야 하므로,
시간 혹은 분이 0
일 때에 대해 적절히 처리해주어야 합니다.
Code
[ 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
namespace Solution {
class Program {
static void Main(string[] args) {
var ottawaTime = int.Parse(Console.ReadLine()!);
var offsets = new Dictionary<int, string> {
{-300, "Victoria"},
{-200, "Edmonton"},
{-100, "Winnipeg"},
{0, "Toronto"},
{100, "Halifax"},
{130, "St. John's"}
};
var ottawaHour = ottawaTime / 100;
var ottawaMin = ottawaTime % 100;
Console.WriteLine($"{ottawaTime} in Ottawa");
foreach (var offset in offsets) {
var localHour = (ottawaHour + (offset.Key / 100) + 24) % 24;
var localMin = (ottawaMin + (offset.Key % 100)) % 60;
if ((ottawaMin + (offset.Key % 100)) >= 60)
localHour = (localHour + 1) % 24;
if (localHour == 0 && localMin == 0)
Console.WriteLine("0 in " + offset.Value);
else if (localHour != 0 && localMin == 0)
Console.WriteLine($"{localHour}00 in {offset.Value}");
else if (localHour == 0 && localMin != 0)
Console.WriteLine($"{localMin} in {offset.Value}");
else
Console.WriteLine($"{localHour}{localMin:D2} in {offset.Value}");
}
}
}
}
[ 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <bits/stdc++.h>
using namespace std;
typedef map<int, string> mis;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int ottawaTime; cin >> ottawaTime;
mis offsets = {
{-300, "Victoria"},
{-200, "Edmonton"},
{-100, "Winnipeg"},
{0, "Toronto"},
{100, "Halifax"},
{130, "St. John's"}
};
int ottawaHour = ottawaTime / 100,
ottawaMin = ottawaTime % 100;
cout << ottawaTime << " in Ottawa\n";
for (const auto& offset : offsets) {
int localHour = (ottawaHour + (offset.first / 100) + 24) % 24,
localMin = (ottawaMin + (offset.first % 100)) % 60;
if ((ottawaMin + (offset.first % 100)) >= 60)
localHour = (localHour + 1) % 24;
if (!localHour && !localMin) cout << "0";
else if (localHour && !localMin) cout << localHour << "00";
else if (!localHour && localMin) cout << localMin;
else cout << localHour << localMin;
cout << " in " << offset.second << "\n";
}
return 0;
}