본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 2525번: 오븐 시계(자바 Java)

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

 

2525번: 오븐 시계

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

www.acmicpc.net

1. 코드

import java.util.*;

class Time{
	private int clock, min, cook;
	
	Time(int clock, int min, int cook){
		this.clock = clock;
		this.min = min;
		this.cook = cook;
	}
	
	public void CookTimeCheck() {		//요리 시간 계산
		for(; cook >= 60; cook -= 60)	//요리 시간이 1시간 이상인 경우
			ClockTimeCheck();	//시 단위만 증가
		
		if(cook > 0)			//그 외의 경우 분 단위만 증가
			MinTimeCheck();
	}
	
	private void ClockTimeCheck() {		//시 단위 증가
		if((clock += 1) > 23)
			clock = 0;
	}
	
	private void MinTimeCheck() {		//분 단위 증가
		if((min += cook) > 59) {
			min -= 60;
			ClockTimeCheck();
		}
	}
	
	public int getClock() {
		return clock;
	}
	
	public int getMin() {
		return min;
	}
}

class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Time t = new Time(sc.nextInt(), sc.nextInt(), sc.nextInt());
		t.CookTimeCheck();
		System.out.println(t.getClock() + " " + t.getMin());
		sc.close();
	}
}

(실행)

2. 풀이

Time 클래스를 생성자에 입력값을 넣어 현재 시각과 요리 시간의 정보를 저장해주고 CookTimeCheck 함수를 통해서 요리 시간이 완료된 시간을 계산해주는데 그 과정을 별도의 함수로 만들어서 시 단위의 변화는 ClockTimeCheck 함수로 확인하고 분 단위의 변화는 MinTimeCheck 함수를 통해서 계산한 뒤 요리가 완료된 시각 정보를 출력한다.

3. 느낀점

자바에 대해 아직 어색해서 클래스로 따로 나누니 생각보다 시간이 걸려서 우선 mian 함수에 모든 과정을 적어보고 그 내용을 기반으로 클래스와 여러 함수들로 나누어 작성했다.