-
[백준] 2884번 알람 시계 - JAVA백준 문제 풀이/JAVA 2023. 6. 1. 14:28
문제
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.
상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.
이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다.
바로 "45분 일찍 알람 설정하기"이다.
이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.
현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다.
입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.
더보기10 10
출력
더보기9 25
풀이
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(); if(M < 45){ H--; M = (60 - (45 - M)); if(H < 0){ H = 23; } System.out.println(H + " " + M); } else{ System.out.println(H + " " + (M-45); } } }
1. import java.util.Scanner
java에서는 Scanner 클래스를 사용하여 값을 입력받습니다.
Scanner은 java.util 패키지에 포함되어 있기 때문에 java.util을 import 해줘야 Scanner를 사용할 수 있습니다.
따라서 코드 맨 위에 'import java.util.Scanner'를 입력해 줍니다.
2. Scanner sc = new Scanner(System.in);
그다음 입력받기 위해 Scanner 객체를 생성합니다.
'sc'는 객체 이름으로 원하는 이름으로 변경해 줘도 상관없습니다.
3. int H = sc.nextInt();
입력받은 숫자를 정수값 변수 H와 M에 저장을 해줍니다.
Scanner 클래스 메소드에는 여러 가지가 있지만 정수형을 입력받을 것이기 때문에 'sc.nextInt()'로 int를 읽어옵니다.
4. if(M < 45){
H--;
M = (60 - (45 - M));
if(H < 0){
H = 23;
}
System.out.println(H + " " + M);
}알람 시간이 6시 50분인 경우 45분 일찍 알람을 맞추게 되면 6시 6분이 됩니다.
하지만 알람 시간이 6시 30분인 경우 45분 일찍 알람을 맞춰주려고 하면 5시 45분으로 맞춰야 합니다.
M(분)이 45보다 작을 경우 H(시)의 값은 1이 줄어들고 M(분)은 45보다 부족한 만큼 60에서 줄어듭니다.
따라서 'H--' 증감연산자로 1의 값을 감소해 주고 M(분)은 45에서 뺀 값을 구해 60에서 빼줍니다.
그렇게 되면 시계의 원리처럼 45분 늦게 알람이 맞춰집니다.
또한 'H--' 했을 때 0보다 작은 수가 나올 수 있기 때문에 중첩 if문을 사용하여 M(분)의 값이 45보다 작을 경우 H(시)의 값을 23으로 해줍니다.
5. else{
System.out.println(H + " " + (M-45));
}else는 if문에서 조건을 만족하지 못할 경우 모든 조건들을 포함하는 것으로 H(시)의 값은 그대로 출력해 주고 M(분)의 값은 45 빼줍니다.
'백준 문제 풀이 > JAVA' 카테고리의 다른 글
[백준] 2480번 주사위 세개 - JAVA (0) 2023.06.05 [백준] 2525번 오븐 시계 - JAVA (0) 2023.06.05 [백준] 14681번 사분면 고르기 - JAVA (1) 2023.06.01 [백준] 2753번 윤년 - JAVA (0) 2023.05.30 [백준] 9498번 시험 성적 - JAVA (0) 2023.05.30