현재

[Java][BaekJoob][2884] 알람 시계 본문

알고리즘/백준

[Java][BaekJoob][2884] 알람 시계

AAAge 2023. 9. 1. 17:21

<문제 설명>

45분 빨리 울리는 알람시계를 만드는 코드

<코드>

import java.util.*;
 
public class BaekJoon_Java_2884{
    public static void main (String []args){
        Scanner scn = new Scanner(System.in);
        int H = scn.nextInt();
        int M = scn.nextInt();
        int changedM = 0;
        int changedH = 0;

        if ( H >=1 && H <= 23){
            if ( M >= 45){
                changedH = H;
                changedM = M - 45;
            }else if ( M < 45){
                changedH = H-1;
                changedM = (M - 45) + 60;
            }

            }else if(H == 0){
            if ( M >= 45){
                changedH = H;
                changedM = M - 45;
            }else if ( M < 45){
                changedH = 23;
                changedM = (M - 45) + 60;
            }

        }

        System.out.println(changedH+" "+changedM);
    }
}

<문제점>

1. 0시 45분 미만일 때는 23시가 되는 조건

2. 1~23시 사이에 45분 미만일때는 시간 -1 을 해주는 조건

3. 44분미만일때 45를 빼주면 음수가 나오기 때문에 절대값을 취해주는 조건

<해결방법>

나는 시간이 0시이고 45분 미만일때는 아예 23시로 만들어버렸다 ( 별로 좋은 코드는 아닌듯 )

그리고 44분에서 45분을 빼면 음수값이 나오기 때문에 절대값을 취해야한다.

하지만 수학적으로는 기호로 단순히 절대 값을 취할 수 있지만 절대값 API를 사용하지 않았다.

분이 60분마다 순환된다는 규칙이 있어서 변경된 분값에 60을 더해서 양수로 만들어 주었다.

어려운 문제는 아니지만 개인적으로 조건이 까다로워서 분에 절대값을 취하는 방법을 몰라서 고민이 많았었다.

<문제 출처>

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

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net