정보
분류 : 조건문
문제
풀이
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int hour = (a * 60 + b + c) / 60; // (14*60+30+20)/60=14.8333...
int minute = (a * 60 + b + c) % 60; // (14*60+30+20)%60=50
if(hour >= 24) {
hour = hour-24;
}
System.out.printf("%s %s", hour, minute);
}
}
풀이 후기
시(hour)는 1시간 = 60분이므로 60분 단위로 짤려야 한다.
예를 들어 14(a) 30(b) 20(c)을 입력받는다면 a를 분으로 변환한 후 b, c를 더해야한다.
더한 값을 60으로 나눈 몫이 시(hour)가 되고 나머지는 분(minute)이 된다.
💡hour 변수
시(a) * 60 : 시를 분으로 변환
시(a) * 60 + b : 분 기준 현재시각
시(a) * 60 + b + c : 분 기준 현재시각 + 조리시간
(시(a) * 60 + b + c) / 60 : 시(hour)
💡 minute 변수
시(a) * 60 : 시를 분으로 변환
시(a) * 60 + b : 분 기준 현재시각
시(a) * 60 + b + c : 분 기준 현재시각 + 조리시간
(시(a) * 60 + b + c) % 60 : 분(minute)
앞 전에 예로 든 숫자로는 정상적인 답이 출력된다.
하지만 여기서 주의할 점이 있다.
a는 0~23이다. 위의 계산식은 24 이상이면 어떻게 해야하는지 고려하지 않았다.
예를 들어, 23(a) 00(b) 120(c)라면 25시 0분이 출력된다.
문제를 보면 24시 00분이면 0시 0분이 되어야한다고 되어있다.
그렇다면 예로 든 올바른 출력 값은 1시 0분이다.
이 점을 보완하기 위해 if라는 조건문을 사용했다.
만약 hour가 24보다 크거나 작다면 hour에서 24를 빼도록 코드를 짜보았다.
reference
'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글
구구단 / 2739 (0) | 2023.11.13 |
---|---|
주사위 세개 / 2480 (0) | 2023.11.09 |
알람 시계 / 2884 (1) | 2023.11.09 |
사분면 고르기 / 14681 (1) | 2023.11.09 |
윤년 / 2753 (0) | 2023.11.07 |