작성일 :

문제 링크

6812번 - Good times

설명

캐나다 도시 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;
}