# 문제
현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면,
이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.
# 풀이
아주 간단한 시간 계산 문제다.우리가 고려해야할 건 딱 두 가지이다.
입력된 시간의 분 값이 45보다 작을 경우, 그리고 이때 시간 값이 0일 경우.
정답 소스코드를 보며 확인해보자.
#include <iostream>
using namespace std;
int main(){
int h, m;
cin >> h >> m;
if(m >= 45) m -= 45;
else{
m += 15;
if(--h < 0) h = 23;
}
cout << h << ' ' << m;
return 0;
}
우선 입력된 시간의 분 값이 45보다 클 경우에는 그대로 45분을 빼준 후 출력하면 된다.
하지만 45보다 작을 경우에는
1. 입력된 시간 값이 0인지 아닌지를 확인 후 조정
2. 분 계산두 가지의 과정이 필요하다.
이때 분을 계산하는 것은 1을 검사할 필요 없이 공통적인 과정이므로 먼저 실행해보자.
⏰ 45보다 작을 경우, 분 계산
입력된 시간이 45보다 작은, 20인 경우를 가정하자.
간단한 계산으로 우리는 45를 뺀 값을 찾을 수 있는데 60 - (45-20) = 35
이는 60 - (45-m), 즉 15+m으로 정리할 수 있다.
⏰ 45보다 작을 경우, 시간 계산
이때는 입력된 시간 값이 0인지 아닌지를 확인할 필요가 있다.
조금 더 간단하고 구현을 위해 전위 연산자를 사용하였다.
if(--h < 0) h = 23;
시간계산을 적용한 값이 0보다 작아질 경우의 값만 23으로 변경하고 출력하면 끝!
이때 입력과 같은 형태로 출력하면 된다고 하였으니, 시간과 분 사이의 공백을 잊지 말자.
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 25314번: 코딩은 체육과목 입니다 | C++ 풀이 (0) | 2023.05.08 |
---|---|
[백준] 2480번: 주사위 세개 | C++ 풀이 (0) | 2023.05.06 |
[백준] 2525번: 오븐 시계 | C++ 풀이 (0) | 2023.05.05 |
[백준] 2588번: 곱셈 | C++ 풀이 (0) | 2023.05.03 |
[백준] 1008번: A/B | C++ 풀이 (0) | 2023.05.02 |