이번 문제는 시간에 관한 문제이다.
우선 나는 문제와 상관없이 유효성 검사를 하는 습관을 들이려고 유효성 검사를 일부러 하였다.
우리가 알다시피 시의 범위는 0 ~ 23, 분의 범위는 0 ~ 59이다.
출력값은 입력값의 45분 전 이므로, 분에서 45분을 뺐을 때 시의 변경이 있을 때만 신경을 써주면 되는 간단한 문제이다.
예를 들어 입력값의 분이 10 일 땐, 시의 변경은 1시간 전으로, 분의 변경은 10 + (60 - 45)분이다. (한 시간은 60분이니까)
하지만 여기서 끝나면 안된다. 왜냐하면 입력값이 0 30 일 땐 위의 조건만으론 출력값이 -1 45가 될 것이다.
그렇기에 분이 45 미만이고, 시가 0일 때만 시를 24로 변경하여 1시간을 빼는 법으로 구현을 했다.
마지막으로 분이 45분이 이상인 경우엔 그냥 45분을 빼버리면 된다.
import java.util.Scanner;
public class Ex2_5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
WakeUp.hour = sc.nextInt();
WakeUp.minute = sc.nextInt();
WakeUp.getWakeUpTime();
}
}
class WakeUp {
static int hour;
static int minute;
static void getWakeUpTime() {
if(minute < 0 || minute > 59) // 유효성 검사
return;
else if(minute < 45) { // 시의 변경이 있을 때
if(hour == 0)
hour = 24; // 시가 0 일땐 24시로 변경하여 1 감소
hour -= 1; // 1시간
minute += 15; // 60분에서 45분을 뻄
}
else
minute -= 45;
System.out.printf("%d %d%n",hour,minute);
}
}
'알고리즘 분류 > Step2 조건문' 카테고리의 다른 글
</Step2_7> 2480 주사위 세개 JAVA (0) | 2023.03.11 |
---|---|
</Step2_6> 2525 오븐 시계 JAVA (0) | 2023.03.11 |
</Step2_4> 14681 사분면 고르기 JAVA (0) | 2023.03.11 |
</Step2_3> 2753 윤년 JAVA (0) | 2023.03.11 |
</Step2_2> 9498 시험 성적 JAVA (0) | 2023.03.11 |