문제 풀이/[JAVA_자바] 백준

[JAVA / 자바] 백준 2884번 - 알람시계

Seunghyun_KO 2021. 11. 29. 09:00
728x90
반응형

문제

원래 설정되어있는 알람을 45분 일찍 설정하는 프로그램을 작성하시오.


입력

두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.

입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.


출력

첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다. (입력과 같은 형태로 출력하면 된다.)


입출력 예시


 

문제 접근 방법

이 문제는 입력받는 시간에서 45분 앞선 시간을 출력하면 되는 문제이다.

따라서, 주의해야 할 점은 24시간 표현법을 사용한다 하였으므로 (0 ≤ H ≤ 23, 0 ≤ M ≤ 59)이고, 분이 음수가 되면 1시간(60분)을 당겨오고 시간이 음수가 되면 하루(24시간)를 당겨오면 된다.


JAVA 코드 풀이

import java.util.*;

public class Main{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        // 시간과 분을 입력받는다.
        int h = input.nextInt();
        int m = input.nextInt();
        
        m -= 45; // 45분 일찍 알람을 설정하기 위함.
        
        if (m < 0){ // 분은 음수가 될 수 없으므로 m변수에 저장된 수가 음수이면 시간에서 60분을 당겨온다.
            h -= 1;
            if(h < 0){ // 시간은 음수가 될 수 없으므로 h변수에 저장된 수가 음수이면 전날로 넘어가 24시간을 당겨온다.
                h += 24;
            }
            m += 60;
        }
        
        System.out.printf("%d %d", h, m);
    }
}

코드 채점 결과


후기

개인적으로 어려운 문제는 아니었다고 생각한다. 시간의 성질만 잘 알고 있다면 초등학교 때 공부하는 시간 뺄셈 문제와 같다고 생각한다. 조건문을 연습하기에 기초가 되는 문제라는 생각이 든다.


문제 원본

https://www.acmicpc.net/problem/2884

728x90
반응형