알고리즘/문제풀이 - 백준
[백준 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);
}
}