Algorithm/백준

백준 문제 2525 번 오븐

EverJunior Minjoo 2022. 6. 1. 22:50

문제 :

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.

또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

입력 :

첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다. 

출력 :

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)


포인트는 필요한 시간은 분단위로 주어지고 끝나는 시각을 구해야한다. 그럼 입력된 현재 시간(h), 분(m) 이 있고, 분으로 입력되는 time이라는 변수를 잡는다 하면,m + time 한 결과가 나와야한다. 그럼 그 결과를 om으로 잡으면, 

om 이 값이 60보다 큰 경우가 주어진다. 그럼 조건문에 60보다 클때와 , 분이 60분인경우 시간이 넘어가니까 분은 0분으로 나와야해서 60분인경우를 잡고, 그 외의 else를 잡아준다.

그럼 이제 60보다 클경우에 오븐구이가 끝나는 시간이 24시를 넘는다면 그때는 다시 0부터 기준이되어야해서 내부 조건문으로 다시 잡아준다.

더보기

여기서 좀 어려웠던 부분이 바로 시간이 24시가 넘었는데 애초애 23시에서 더했을때를 기준으로 잡으니까 결과가 잘못 나온다.(예를들어 23시 30분에 30분걸리는 요리를하면 0시 0분으로 나오는데, 22시 59분에 시작해서 256분 걸리는 요리를 하면 결과가 0시 15분으로 나오고, 뭐 이런식이 된다.)

그래서 값을 좀 수정해서 시간도 증가되도록 조건과 연산을 바꾸니 ( 22시 59분에 시작한거면 5시간 16분 걸리니까 3시 15분으로 나와야하는데  이게 또 에러로 5시 15분이 나온다)

굳이 따지자면 연산을 거는게 조금 까다로웠던점..? 분계산에 조건과, 연산을 먼저 맞추고 그 안에서 시에 대한 연산과 조건도 맞춰야했다.

package test01;

import java.util.*;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int h, m, time, oh, om, om1;
		h = sc.nextInt(); m = sc.nextInt();
		time = sc.nextInt();
		om = time + m;
		if(om>60) {
			oh = h+(om/60);
			if(oh >= 24) {
				oh = (h + (om/60))-24;
				om1 = om - (60*(om/60)); 
				System.out.printf("%d %d", oh,om1);
			}else {
				om1 = om - (60*(om/60)); 
				System.out.printf("%d %d", oh,om1);
			}
			
		}else if(om == 60) {
			if(h ==23) {
				oh = 0;
				om = 0;
				System.out.printf("%d %d", oh,om);
			}else {
				om = 0;
				oh = h+1;
				System.out.printf("%d %d", oh,om);
			}
		}else {
			if(h==23) {
				oh = 0;
				System.out.printf("%d %d", h,om);
			}else {
				System.out.printf("%d %d", h,om);
			}
		}	
	}

}