본문 바로가기
study/CodingTest

백준 2884 알람시계 (Java)

by 고기만두(개발자) 2021. 11. 5. 00:30
728x90
반응형

"45분 일찍 알람 설정하기"

입력
첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59)
그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.
입력 시간은 24시간 표현을 사용한다.
24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다.
시간을 나타낼 때, 불필요한 0은 사용하지 않는다.

출력
첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다.
(입력과 같은 형태로 출력하면 된다.)
10:10 -> 9:25
0:30 -> 23:45
23:40 -> 22:55


import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int H = sc.nextInt();
        int M = sc.nextInt();
        sc.close();
        
        if(H == 0) {    //0시
            if(M < 45){    //0시 45분 이전이면 -> 그전날 23시 (60+M)-45 = M + 15분
                
                H = 23;
                M = M + 15;
                
            } else {    //0시 45분 이후이면 : 0시 M-45분
                
                M = M - 45;
            }
            
        } else {    //0시 아닌 경우
            if(M < 45){    //0시 아니고 45분 이전 -> H-1 시 M+15분
                
                H = H - 1;
                M = M + 15;
                
            } else {    //0시 아니고 45분~59분인 경우 -> H시 (M-45)분
                
                M = M - 45;
            }
        }
        
        
        String answer = "";
        
        answer= Integer.toString(H) + " " + Integer.toString(M);
        
        System.out.println(answer);
    }
}

출력케이스를 친절하게 보여줘서 케이스에 맞게 로직 설계만 잘 하면 되는 일
케이스를 빼먹지 않는게 포인트
0시 45분~59분 구간 빼먹을 뻔 했다.

P과장님의 최근 코드리뷰 피드백이 또 귓전에 들렸다.
만두씨, 로직이 사선으로 흐르게 하면 가독성도 좋고 훨씬 보기 편하지 않을까?

728x90
반응형

댓글