본문 바로가기

백준 코딩테스트/if문 + for문

[백준] [자바] 2884번 : 알람 시계 (2단계 : if문제)

728x90
728x90

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net



=문제푸는 팁=

문제 조건 : 하루의 시작은 0:0, 끝은 23:59, 시간 표현할 때 불필요한 0은 생략하기

H에서 제일 조심해야하는 부분 : 0에서 M-45했을 때, 23이 되야한다.

M에서 제일 조심해야하는 부분 : 45미만 상태에서 M-45했을 때는, H-1을 한 후, 0까지 -45하고,
남은 수는 60에서 또 -를 진행해야 한다.

 

=해설=

1단계 : M<45 일 때 , H가 0이라면, H는 23이 된 후, 60-(45-M)

1-2단계 : H가 0이 아니라면, H-1 후, 60-(45-M)

2단계 : M>45 일 때, H는 그대로 M-45

 

출력하는 위치가 중요한데, 1단계 전체 끝나고 나서 출력하고,

else를 사용해서 2단계 진행하고나서 한 번 출력

 

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	
	int H = scan.nextInt();
	int M = scan.nextInt();
	
	scan.close();
	
	if(M<45) {
		if(H==0) {
			H=23;
			M=60-(45-M);
			}else {
				H--;
				M=60-(45-M);
				}
			System.out.println(H+" "+M);
			} else {System.out.println(H+" "+(M-45));
		}
	}
}

728x90