백준 알고리즘 2단계 if문 2884번 문제입니다.
Q. 45분 일찍 설정되는 알람 프로그램을 작성하시오.
[입력]
- 두 정수(H, M)
[조건]
- 첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.
- 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.
풀이
이 문제는 2가지가 핵심이었던 것 같다.
1. 45분을 기준으로 분기처리 : 입력값이 45보다 작다면 60을 기준으로 45를 빼줘야하기 때문에 (입력값+60) - 45
2. 자정(0:0)처리 : 입력값이 45보다 작으면서 시간값이 0이라면 23으로 조정
소스
package com.baek.algo;
import java.util.Scanner;
public class Q2884 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int hh = sc.nextInt();
int mm = sc.nextInt();
int rh = 0;
int rm = 0;
if(mm < 45) {
if(hh == 0) {
rh = 23;
} else {
rh = hh - 1;
}
rm = (mm + 60) - 45;
} else {
rh = hh;
rm = mm - 45;
}
System.out.println(rh + " " + rm);
sc.close();
}
}