JAVA - 백준 [BAEK JOON]/조건문

[백준] 2884번 : 알람시계 - JAVA (자바)

_ys2 2024. 4. 20. 20:48
728x90
반응형

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

 

2884번: 알람 시계

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

www.acmicpc.net


문제

출처 - 백준 알고리즘


문제 풀이

1. 먼저, 사용자에게 시간과 분을 입력받는다.
2. 입력된 분이 45분 미만인지 확인한다 만약 그렇다면, 시간을 하나 줄이고, 분을 45분에서 입력된 분을 뺀 값으로 설정한다. 그러나 시간이 음수가 되면 자정을 넘어가므로, 시간을 23으로 설정한다.
3. 만약 입력된 분이 45분 이상이라면, 시간은 변경하지 않고 분에서 45를 뺀 값을 출력한다.
4. 마지막으로, 입력된 시간과 분에 따라 계산된 알람 시간을 출력한다.
5. 프로그램이 끝나면 사용된 시스템 자원을 해제한다.

 

문제대로 해석한 내 생각을 코드로 작성해 보자!

import java.util.Scanner;

public class Main { 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);    
        int hh = sc.nextInt();  
        int mm = sc.nextInt();  

        if (mm < 45) {  
            hh--;   
            mm = 60 - (45 - mm);    
            if (hh < 0) {   
                hh = 23;
            }
            System.out.println(hh + " " + mm);  
        } else {
            System.out.println(hh + " " + (mm - 45));    
        }
        sc.close();   
    }

}

코드 풀이

Scanner sc = new Scanner(System.in);    // 사용자를 입력을 받기 위해 Scanner 객체를 생성
사용자로부터 입력을 받는다.
int hh = sc.nextInt();  // 시간
int mm = sc.nextInt();  // 분
사용자로부터 시간과 분을 입력을 받을 변수 hh와 mm에 저장한다.
if (mm < 45) {  // 만약 입력된 분이 45 미만이라면
    hh--;   // 시간을 1시간 줄이고
    mm = 60 - (45 - mm);    // 분을 45분에서 입력된 분을 뺀 값으로 설정
    if (hh < 0) {   // 만약 시간이 음수가 된다면, 23으로 설정 (자정을 넘어가는 경우)
        hh = 23;
    }
    System.out.println(hh + " " + mm);  // 결과를 출력 (시간과 분을 공백으로 구분하여 출력)
} else {
    System.out.println(hh + " " + (mm - 45));    // 입력된 분이 45 이상인 경우, 시간은 변경 없이 분에서 45를 뺀 값을 출력
}
분이 45분 미만인 경우에는 시간을 1시간 줄이고, 분을 45분에서 입력된 분을 뺀 값으로 설정한다.
만약 시간이 음수가 되면 자정을 넘어가는 경우이므로 23시로 설정한다.
분이 45 이상인 경우에는 시간은 변경 없이 분에서 45를 뺀 값을 출력한다.

 

sc.close();   // 시스템 자원 누수를 방지하기 위해 Scanner 개체를 닫는다.
사용이 끝난 Scanner 객체를 닫아서 시스템 자원 누수를 방지한다.

피드백 & 정리

요즘 문제를 푸는데만 초점을 둬서 그런지 할 때는 어떤 코드든 생각이 나면서 푸는 거 같은데 왠지 모르게 아무 생각도 안 난다.. 그래서 포스팅을 하면서 다시 되새겨보자라는 생각으로 열심히 작성하고 있다! 더 많이 힘내보자!

깃 허브

https://github.com/CHUNYOUNGSANG/Algorithm_Judge/blob/main/boj/java/step/b_02_conditional_statement/p_2884.java

 

Algorithm_Judge/boj/java/step/b_02_conditional_statement/p_2884.java at main · CHUNYOUNGSANG/Algorithm_Judge

Contribute to CHUNYOUNGSANG/Algorithm_Judge development by creating an account on GitHub.

github.com

 

반응형