728x90
https://www.acmicpc.net/problem/2525
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String origin = sc.nextLine();
int duringTime = sc.nextInt();
String[] split = origin.split(" ");
int H = Integer.parseInt(split[0]);
int M = Integer.parseInt(split[1]);
// 현 시간에 걸리는 시간을 더했을 때 60분이 넘는 경우를 구하기 위함
int mok = (M + duringTime) / 60;
if (mok >= 1) {
if (H + mok >= 24) {
int HH = H + mok - 24;
System.out.println(HH + " " + (M + duringTime - (mok * 60)));
} else {
System.out.println((H + mok) + " " + (M + duringTime - (mok * 60)));
}
} else {
System.out.println(H + " " + (M + duringTime));
}
}
}
바로 전에 포스팅 한 알람시계 문제와 크게 다르지 않은 문제다 !
달랐던 점은 Scanner로 받을 때 메서드를 nextLine()로 사용하여 공백을 포함해서 받아야 했다.
그리고 난 후 split() 메서드로 공백을 기준으로 나눠주었다. (그냥 nextInt()를 세 번 받아도 되긴 한다!!)
그리고 오븐이 걸리는 시간이 60분일 수도 120분일 수도 있는 거라 원래 입력한 시간보다 무조건 ++가 되는 것이 아니라 이걸 고려해서 코드를 짜주었다.
그런데 이렇게 짜는 것보다 시와 분을 모두 분으로 표시한 뒤, 걸리는 시간을 더하고 나온 최종 결과를 다시 시와 분으로 표현하는 방법이 조금 더 쉽게 구할 수 있다.
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();
int C = in.nextInt();
int min = 60 * A + B; // 시 -> 분
min += C;
int hour = (min / 60) % 24;
int minute = min % 60;
System.out.println(hour + " " + minute);
이렇게 말이다 ! 시간을 구할 때 24시가 넘어가는 경우를 구하기 위해 % 24 로 나머지를 구하는 방식을 써주었다.
if문을 쓰지 않고 해결할 수 있다니 ! 아주 좋은 지식을 알아간다 ^_^
728x90
'Algorithm' 카테고리의 다른 글
백준 - 2903번 중앙 이동 알고리즘 (Java 풀이) (0) | 2025.01.05 |
---|---|
백준 - 10810번 공 넣기 (Java 풀이) (0) | 2024.12.02 |
백준 - 2480번 주사위 세개 (0) | 2024.10.24 |
백준 - 2884번 알람시계 (1) | 2024.10.13 |
백준 - 2753번 윤년 (3) | 2024.10.11 |