본문 바로가기
Algorithm

백준 - 2525번 오븐 시계

by 호강하는 지해 2024. 10. 15.
728x90

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

 

 

 

import java.util.Scanner;

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

        String[] split = origin.split(" ");
        int H = Integer.parseInt(split[0]);
        int M = Integer.parseInt(split[1]);

        // 현 시간에 걸리는 시간을 더했을 때 60분이 넘는 경우를 구하기 위함
        int mok = (M + duringTime) / 60;
        
        if (mok >= 1) {
            if (H + mok >= 24) {
                int HH = H + mok - 24;
                System.out.println(HH + " " + (M + duringTime - (mok * 60)));
            } else {
                System.out.println((H + mok) + " " + (M + duringTime - (mok * 60)));
            }
        } else {
            System.out.println(H + " " + (M + duringTime));
        }
    }
}

바로 전에 포스팅 한 알람시계 문제와 크게 다르지 않은 문제다 !

 

달랐던 점은 Scanner로 받을 때 메서드를 nextLine()로 사용하여 공백을 포함해서 받아야 했다.

그리고 난 후 split() 메서드로 공백을 기준으로 나눠주었다. (그냥 nextInt()를 세 번 받아도 되긴 한다!!)

 

그리고 오븐이 걸리는 시간이 60분일 수도 120분일 수도 있는 거라 원래 입력한 시간보다 무조건 ++가 되는 것이 아니라 이걸 고려해서 코드를 짜주었다.

 

 

그런데 이렇게 짜는 것보다 시와 분을 모두 분으로 표시한 뒤, 걸리는 시간을 더하고 나온 최종 결과를 다시 시와 분으로 표현하는 방법이 조금 더 쉽게 구할 수 있다.

Scanner in = new Scanner(System.in);
 
int A = in.nextInt();
int B = in.nextInt();
 
int C = in.nextInt();
 
int min = 60 * A + B;   // 시 -> 분
min += C;
 
int hour = (min / 60) % 24;
int minute = min % 60;
 
System.out.println(hour + " " + minute);

이렇게 말이다 ! 시간을 구할 때 24시가 넘어가는 경우를 구하기 위해 % 24 로 나머지를 구하는 방식을 써주었다.

if문을 쓰지 않고 해결할 수 있다니 ! 아주 좋은 지식을 알아간다 ^_^

728x90