본문 바로가기
JAVA/백준 알고리즘

[백준] 2884번 알람 시계 - Java

by 코딩전사_추추 2022. 4. 1.
728x90
반응형

1. 문제

 

2884번: 알람 시계

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

www.acmicpc.net

- 원래 설정된 알람을 45분 앞선 시간으로 바꾸기

- H와 M은 설정해놓은 알람 시간(H)과 분(M)이며, 0 ≤ H ≤ 23, 0 ≤ M ≤ 59

- 하루의 시작은 0:0, 끝은 23:59

- 불필요한 0은 사용하지 않는다. 즉, 03 03이 아닌 3 3으로 표시한다.

2. 문제 풀이

1. 우선 입력받은 분에서 45분을 뺀다.

입력받은 분이 45분 이상 59분 이하이면 시간은 그대로 출력하고, 분은 45분 뺀 분을 출력한다.

6 50 -> 6 5

6 45 -> 6 0

 

2. 입력받은 분이 45분보다 작으면?

6 25 -> 6 -20 이 된다.

이 경우 H에서 1을 빼고, M에 60을 더하면 6 25 -> 5 40이 된다!

 

3. 입력받은 분이 45분보다 작아서 H-1을 했는데 시간이 마이너스가 된다면?

문제에서 시간은 0시~23시로 지정해 놓았다. 만약 입력된 시간이 0시 25분이었다면, 

25분이 45분보다 작기 때문에 0시에서 1을 빼야 한다. 그럼 시간이 -1시가 되기 때문에

분에서와 마찬가지로 24를 더해준다. 

0 25 -> 23 40이 된다.

 

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int H = sc.nextInt(); // 시간
		int M = sc.nextInt();  // 분

		M = M - 45; // 입력받은 분에서 45분을 빼고
		
		if(M < 0) { // 만약 마이너스가 나오면 
			H = H - 1; // 시간을 1 빼주고
			M = 60 + M; // 마이너스 된 분을 60분과 더해서 최종 분을 구한다.
			if(H < 0) { // H에서 1을 빼서 0이하가 되버린다면
				H = 24 + H; // 24시간에 더하기
			}
		}
		
		System.out.println(H + " " + M);
	}

}

 

728x90
반응형