반응형
-해법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int h = in.nextInt();
int m = in.nextInt();
m-=45;
if(m<0){
h-=1;
m+=60;
if(h<0){
h+=24;
}
}
System.out.println(h+" "+m);
in.close();
}
}
문제를 요약하면 입력값은 설정 시간, 분이며 입력값의 시간보다 45분 앞선 값을 출력해주면 된다. 45분 앞선 값이 핵심이므로 설정 시간에서 시간이 감소한다는 것에 집중하면 된다. 즉 시간이 증가해서 24를 넘는 경우는 없으므로 if문의 조건에서 0시 0분보다 값이 작아지는 경우만을 고려해주면 된다.
1. 분으로 입력된 값에서 우선 45분을 빠르게 맞춘다.
2. 빠르게 맞춘 값이 0분보다 아래가 되는 경우에 대한 조건을 설정한다. (ex. 설정 값(5분) - 45분 = -40분)
3. 0분보다 아래가 되는 경우는 앞선 시간이므로 시간에서 1시간을 빼준다. (즉, 한 시간 단위 앞으로 이동)
4. 0분보다 아래가 되는 분은 1시간인 60분을 더해주어 양수 값을 취한다. (ex. 2시 5분(-45분) => 1시(-1시간) 20분(-40분 + 60분)
5. 분과 마찬가지로 시간 또한 0시간 아래가 되는 경우를 고려해 조건을 한번 더 설정한다.
6. 분과 마찬가지로 0시간 아래가 된 것은 1시간 앞선 것이므로 +24시간을 더해준다.(ex. -1시 +24시 =23시)
글로보면 복잡한데 직접 머리로 생각해보면 간단하다.
반응형