[Java] 오븐 시계 (백준)

Haeun Noh·2023년 2월 11일
0

백준

목록 보기
1/1

0211




알고리즘 (접근 방법)

오븐 시계문제는 현재 시간에서 필요한 시간을 더하여 훈제오리구이 요리가 끝나는 시각을 계산하는 문제이다.
이를 해결하기 위해서 필자는 두 개의 방법을 생각했다.

  1. 필요한 시간과 주어진 현재 시간의 분시를 더하였을 때 60이 넘는다면 시를 올림하여 나머지를 분으로 계산하는 것
  2. 주어진 시간을 분으로 변환하여 모두 더한 다음, 시로 변환하여 계산하는 것

하지만 첫 번째 방법은 분끼리 더한 값이 60이 넘는지에 대한 여부도 봐야하고 시를 올림하는 절차도 필요하기에 방법이 복잡하다.

따라서 필자는 두 번째 방법을 사용하여 문제를 풀었다.


먼저 주어진 시간을 단위로 변환해야 한다. 이것은 60을 곱한 뒤 모든 단위를 더하면 되는 것이기에 쉬울 것이다.

int minute = A*60+B+C;// 분 단위 변환

그 다음으로는 분 단위로 변환된 minute을 다시 60으로 나누어 시간을 계산한다.

int hour = (minute/60);

하지만 이렇게 하면 문제점이 하나가 있다.


문제에서는 시 단위0~23까지라고 되어있는데 만약 hour24 이상이 된다면 이상한 숫자가 나올 것이 분명하다.

따라서 나머지 연산자를 사용하여 그 문제를 해결하였다.

int hour = (minute/60)%24;

마지막으로 아직 모든 분 단위의 합이 값으로 있는 minute60으로 나머지 연산자를 사용하여 분 단위도 정확하게 구해준다.

System.out.println(hour+" "+minute%60);


소스 코드

import java.util.Scanner;

class B2525 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int A = scan.nextInt();
        int B = scan.nextInt();
        int C = scan.nextInt();// 요리에 필요한 시간(necessary)
        
        int minute = A*60+B+C;// 시로 변환
        int hour = (minute/60)%24;
        System.out.println(hour+" "+minute%60);
    }
}


profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글