반갑습니다! 미주입니다:^)
이번에는 "2884번 알람 시계" 문제입니다!
구현에 대한 문제이며 정답 비율이 약간 낮지만(?) 이해만 한다면 쉽게 해결하실 수 있습니다 하핳 :^)
[문제&입력&출력]
[풀이]
문제는 입력받은 시간의 45분 전의 시간을 출력해야 합니다
시간은 00:00(오늘 자정) ~ 23:59(다음날 자정 1분 전)으로 표시합니다
예를 들어, 02:30이라면 오전 2시 30분이고 17:05이라면 오후 5시 5분입니다
45분 전의 시간을 구하기 위해 입력받은 시간의 분(minute)을 45만큼 감소시킵니다
이때, 분(minute)이 몇 분인지에 따라 시(hour)가 영향을 받습니다!
현재 3시 50분이라면 45분 전이면 3시 5분입니다
분(minute)이 45분 이상이므로 45만큼 감소시키고 시(hour)는 영향 없습니다
하지만 현재 3시 20분이라면 45분 전이면 2시 35분입니다
분(minute)이 45분 미만이므로 45만큼 감소시킨 뒤 다시 60만큼 증가시키고 시(hour)를 1만큼 감소시킵니다
위 설명에 따라 총 2가지 경우(45분 이상, 45분 미만)로 구분됩니다
위 2가지 경우 중에 "45분 미만"인 경우, 시(hour)에 따라 다시 2가지로 구분됩니다
현재 4시 30분이라면 45분 전이면 3시 45분입니다
분(minute)이 45분 미만이므로 45만큼 감소시킨 뒤 다시 60만큼 증가시키고 시(hour)를 1만큼 감소시킵니다
하지만 현재 0시 20분이라면 45분 전이면 23시 35분입니다
분(minute)이 45분 미만이므로 45만큼 감소시킨 뒤 다시 60만큼 증가시키고 시(hour)가 1시 미만이므로 23시로 설정해야 합니다
위의 설명에 따라 시(hour)와 분(minute)에 대해 총 4가지 경우로 구분됩니다
1) minute이 45분 미만
1-1) hour가 1시 미만
1-2) hour가 1시 이상
2) minute이 45분 이상
[자바 코드]
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
String[] time = new String[2];
str = br.readLine();
time = str.split(" ");
int hour = Integer.parseInt(time[0]);
int minute = Integer.parseInt(time[1]);
if(minute - 45 < 0) { // minute이 45분 미만
if(hour - 1 < 0) // hour가 1시 미만
bw.write(String.valueOf("23 " + (15+minute)));
else // hour가 1시 이상
bw.write(String.valueOf((hour-1) + " " + (15+minute)));
}
else // minute이 45분 이상
bw.write(String.valueOf(hour + " " + (minute-45)));
bw.close();
}
}
알려드린 것이 도움되길 바라며 다들 자바 공부 열심히 하세요~!~! :^)
'BaekJoon' 카테고리의 다른 글
[백준 알고리즘] [10950번 A+B-3] 자바 코드 (0) | 2020.08.31 |
---|---|
[백준 알고리즘] [2739번 구구단] 자바 코드 (0) | 2020.08.31 |
[백준 알고리즘] [14681번 사분면 고르기] 자바 코드 (0) | 2020.08.31 |
[백준 알고리즘] [2753번 윤년] 자바 코드 (0) | 2020.08.31 |
[백준 알고리즘] [9498번 시험 성적] 자바 코드 (0) | 2020.08.31 |
댓글