알고리즘/문제풀이 - 백준

[백준 2525번] 오븐 시계(JAVA)

DJDU 2022. 10. 25. 00:37

문제 출처 - https://www.acmicpc.net/problem/2525


시행착오(Trial&Error)

단순 사칙연산이 아니라, 시간 개념으로 생각하다보니 실수를 많이 했다.

풀이(Solution)

조건문 문제 답게 분기를 어떻게 할 것인가를 파악하는 것이 핵심이다. 즉, '분류'를 잘 해야 한다.

같은 눈이 3개인 경우, 2개인 경우, 모두 다를 경우를 어떻게 분기할지 잘 생각해야 한다.

우선, 시작 시간에서 작업 시간을 더했을 때, 24시를 기준으로 '분기'했다.

그리고 그 분기 안에서 '분'을 기준으로 분기했다.

마지막으로 작업 결과 24시가 된 경우 24시를 0시로 수정해주면 끝난다.

코드(Code)

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int hour = sc.nextInt();
        int minute = sc.nextInt();
        int ovening = sc.nextInt();
        int oh = ovening / 60;  // 오브닝 소요 시간(시간) 80 분 == 1시간 20분
        int om = ovening % 60;  // 오브닝 소요 시간(분)
        if(hour + oh == 24) {
            hour = 0;
            if(minute + om == 60) {
                hour++;
                minute = 0;
            } else if(minute + om > 60) {
                hour++;
                minute += om - 60;
            } else if(minute + om < 60) {
                minute += om;
            }
        } else if(hour + oh > 24) {
            hour += oh - 24;
            if(minute + om == 60) {
                hour++;
                minute = 0;
            } else if(minute + om > 60) {
                hour++;
                minute += om - 60;
            } else if(minute + om < 60) {
                minute += om;
            }           
        } else if(hour + oh < 24) {
            hour += oh;
            if(minute + om == 60) {
                hour++;
                minute = 0;
            } else if(minute + om > 60) {
                hour++;
                minute += om - 60;
            } else if(minute + om < 60) {
                minute += om;
            }
        }
        if(hour == 24) 
            hour = 0;
        System.out.println(hour + " " + minute);
    }
}