백준 2884

import java.util.Scanner;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int h = sc.nextInt();
        int m = sc.nextInt();
        
        if(m >= 45){
            m = (m - 45);
        } else if(h < 1){
            h = (h + 23);
            m = (m + 15);
        } else {
            h = (h - 1);
            m = (m + 15);
        }
        System.out.println(h + " " + m);
        sc.close();
    }
}

 

2단계 if문제의 마지막 문제입니다. 박수!!

 

이번 문제도 이전 문제들과 큰 차이는 없습니다.

 

시간 관련 문제라서 60분을 기준으로 했을 때 시간과 분을 구분해서 작성하면 됩니다.

 

문제에서 원하는 바는 45분 빠른 알람 설정이기 때문에 이것이 기준이 됩니다.

 

'분' >= 45 조건에서는 단순히 45분을 빼면 됩니다.

 

하지만 '분'이 45보다 작을 때는 0보다 작아지면 다시 숫자가 커지는데, 이때 '시'에서 60분을 빌려옵니다.

 

분 < 45 조건에서는 '시' + 1, ('분' -45) + 60 == '분' + 15가 됩니다.

 

마지막으로 '시'는 0보다 작아지면 23으로 변하기 때문에 '시' + 23, '분' + 15를 하면 됩니다.

 

다른 방식도 많을 것 같지만 이게 제일 간단해보였습니다.

 

++

참고로 계산식에 괄호는 사용하지 않아도 되지만 정확히 표현하기 위해 사용했습니다.