본문 바로가기

study/baekJun

[백준/자바/java/백준2884]백준 2884 알람시계

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

상근이가 45분 일찍 일어나기 위해 

시간을 맞춰줘야 하는 문제

import java.util.Scanner;
import java.io.*;
public class qn2884{
   public static void main(String[] args){
      
      Scanner sc = new Scanner(System.in);
      
      int HH,MM;
      int changeHH = 0, changeMM=0;
      HH =sc.nextInt();
      MM =sc.nextInt();
      
      if(MM>=45){
         changeHH = HH;
         changeMM = MM-45;
      }
      else if(MM<45){
         if(HH==0) changeHH = 23;
         else changeHH = HH-1;
         
         changeMM = 60-Math.abs(MM-45);
         
      }
      System.out.printf("%d %d",changeHH,changeMM);
   }
}

일단 HH,MM은 기존 상근이가 일어나야 하는 시간

changeHH, changeMM은 상근이의 알람이 울려야 하는 시간

상근이에게 기존 시간을 입력을 받고

만약 MM이 45분보다 크다면 단순히 MM의 뺄셈으로 해결이 가능하다

하지만 작을 경우 HH의 시간이 한 시간 땡겨져야 하기 때문에 if문으로 두 경우를 나눠주었다.

이때 changeMM은 60-(기존MM-45)으로 계산이 가능한데

이때 (기존MM-45)는 반드시 절대값으로 처리해 주어야 한다.

만약 23:01이 입력된다면 기존MM=1,

60-(-44)면 104로 처리가 되기 때문이다.

절대값처리는 따로 import할 필요 없이 Math.abs함수를 사용하였다

또한 만약 24시라면??

문제에서는 24시를 00시로 표현을 하였고 

00:1일 경우 -1:16분으로 출력이 될 것이다.

그래서 00시를 처리해 줄 if문을 또 만들어 주었다.