작성일 :

문제 링크

26752번 - Zegarek

설명

시, 분, 초가 주어질 때 1초 뒤의 시각을 구해 HH:MM:SS 형식으로 출력하는 문제입니다. 23:59:59에서 1초 뒤는 00:00:00으로 돌아갑니다.


접근법

1초를 더한 뒤 자리 올림을 처리하면 됩니다. 초가 60이 되면 0으로 바꾸고 분을 1 증가시킵니다. 분이 60이 되면 마찬가지로 0으로 바꾸고 시를 1 증가시킵니다. 시가 24가 되면 0으로 되돌립니다.

출력 시 각 값을 두 자리로 맞추기 위해 앞에 0을 채워 출력합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;

class Program {
  static void Main() {
    var parts = Console.ReadLine()!.Split();
    var h = int.Parse(parts[0]);
    var m = int.Parse(parts[1]);
    var s = int.Parse(parts[2]);

    s++;
    if (s == 60) { s = 0; m++; }
    if (m == 60) { m = 0; h++; }
    if (h == 24) h = 0;

    Console.WriteLine($"{h:D2}:{m:D2}:{s:D2}");
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int h, m, s; cin >> h >> m >> s;

  s++;
  if (s == 60) { s = 0; m++; }
  if (m == 60) { m = 0; h++; }
  if (h == 24) h = 0;

  cout << setfill('0') << setw(2) << h << ":"
       << setw(2) << m << ":" << setw(2) << s << "\n";

  return 0;
}