[백준 2530] 인공지능 시계 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
현재 시각에 초 단위의 시간을 더한 후, 시, 분, 초 단위로 변환해 출력하는 문제입니다.
- 현재 시각은
시
,분
,초
로 주어집니다. - 여기에 초 단위의 시간이 추가되며, 그 결과를 다시
시
,분
,초
형태로 출력해야 합니다. - 시는
0~23
, 분과 초는0~59
범위를 벗어날 수 없으므로, 덧셈 후 단위별로 보정해야 합니다.
접근법
- 우선 현재 초에 추가 초를 더해 새로운 초를 계산합니다.
60
으로 나누어분
으로 넘겨야 하는 값을 구하고, 나머지는최종 초
로 저장합니다.- 위에서 얻은
분
값은 기존 분과 더하고, 다시60
을 기준으로시
를 넘기는 값을 분리합니다. - 최종
시
는 기존 시에 값을 더하고,24
를 초과하는 경우에는 다시0~23
범위로 보정합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
class Program {
static void Main() {
var time = Console.ReadLine().Split();
int h = int.Parse(time[0]);
int m = int.Parse(time[1]);
int s = int.Parse(time[2]);
int add = int.Parse(Console.ReadLine());
m += (s + add) / 60;
s = (s + add) % 60;
h += m / 60;
m %= 60;
h %= 24;
Console.WriteLine($"{h} {m} {s}");
}
}
[ 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, needS; cin >> h >> m >> s >> needS;
m += (s + needS) / 60;
s = (s + needS) % 60;
h += m / 60;
m %= 60;
h %= 24;
cout << h << " " << m << " " << s << "\n";
return 0;
}