문제
현재 시각(시 분 초)과 요리 시간(초)이 주어질 때, 요리가 끝나는 시각을 구하라.
입력
첫째 줄에 현재 시각(A B C), 둘째 줄에 요리 시간(D초)이 주어진다.
출력
요리가 끝나는 시각을 시 분 초로 출력한다.
예제
| 입력 | 출력 |
|---|---|
14 30 0 200 | 14 33 20 |
풀이
초에 요리 시간을 더한 뒤, 60 단위로 올림하여 분과 시를 갱신한다.
- 초(C)에 D를 더한다
- 초가 60 이상이면 분으로 올림하고 나머지를 초로 남긴다
- 분이 60 이상이면 시로 올림하고 나머지를 분으로 남긴다
- 시가 24 이상이면 24로 나눈 나머지를 취한다
핵심 아이디어: 단순한 시간 덧셈과 자리올림(carry) 연산이다.
코드
package day649;
import java.io.*;
import java.util.*;
public class Day604BOJ2530인공지능시계 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(br.readLine());
c += d;
b += (c / 60);
c = c % 60;
a += (b / 60);
b = b % 60;
a = a % 24;
System.out.print(a + " " + b + " " + c);
}
}복잡도
- 시간: O(1)
- 공간: O(1)