문제 출처: www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
1. 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
int main(void) | |
{ | |
int h, m; | |
cin >> h >> m; | |
if ((m - 45) < 0) | |
{ | |
m = 60 - (45 - m); | |
if ((h - 1) < 0) | |
h = 23; | |
else | |
h--; | |
} | |
else | |
m -= 45; | |
cout << h << " " << m; | |
return 0; | |
} |
2. 풀이
int h, m;
cin >> h >> m;
먼저, h(시)와 m(분)을 입력하여 알림을 설정하고 싶은 시간을 입력받는다.
if ((m - 45) < 0)
{
m = 60 - (45 - m);
if ((h - 1) < 0)
h = 23;
else
h--;
}
그리고 m - 45 일때 0미만이 될 경우 m = 60 - (45 - m)을 하면 우리가 원하는 m(분)이 나온다. 그리고 m - 45 일때 0미만이면 당연히 h의 시간도 변해야한다. 그런데 여기서 h - 1일때 0미만이면 h의 값은 23이다. 만약 아닐 경우는 h에서 1을 빼면 된다.
else
m -= 45;
m - 45가 0이상일 경우에는 그냥 m - 45 값을 m에 저장하면 된다.
cout << h << " " << m;
return 0;
그리고 출력 h와 m을 출력해주면 끝이다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10950번: A+B - 3 [C++] (0) | 2020.12.01 |
---|---|
백준 알고리즘 2739번: 구구단 [C++] (0) | 2020.11.30 |
백준 알고리즘 14681번: 사분면 고르기 [C++] (0) | 2020.11.27 |
백준 알고리즘 9498번: 시험 성적 [C++] (0) | 2020.11.24 |
백준 알고리즘 1330번: 두 수 비교하기 [C++] (0) | 2020.11.23 |