시간 계산 관련 조건문 문제다.
분의 경우 0분부터 44분까지와 45분부터 59분까지를 구분할수 있어야되고,
시간의 경우 0시에 관련된 처리를 어떻게 할지 생각해내야 한다.
H==0시를 기준으로 구분한 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
if(H==0) {
if(M<45) {
H = 23;
M = M+15;
}else {
M = M-45;
}
}else {
if(M<45) {
H = H-1;
M = M+15;
}else {
M = M-45;
}
}
System.out.println(H + " " + M);
}
}
H가 0시일 경우 별도로 설정을 안해주면 45분 이전으로 설정할때 -1 시로 나오므로 23시가 나오게 만들어주고
0분부터 44분까지는 45분 전으로 알람을 설정할때 60 - (45-M) 이므로 M+15이다.
45분부터 59분까지는 H값은 바뀌지 않고 M=M-45를 하면 된다.
H가 1~23시일 때는 H-1; 또는 H--;를 설정해주고 나머지는 위와 똑같이 써준다
M<45를 기준으로 구분한 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
if(M<45) {
H--;
M = 60-(45-M);
if(H<0) {
H=23;
}
}else {
M = M-45;
}
System.out.println(H + " " + M);
}
}
45분 전으로 알람을 맞추므로, H는 무조건 H-1; or H--; 로 설정하고
H<0 일때, 즉, 0시를 입력받아 -1시가 값으로 나올때 H를 23으로 설정해주면 된다.
if else 문에서는 M이 45~59분일 때인데, 이때는 H값은 안바뀌고 M=M-45를 해준다.
'알고리즘 풀이' 카테고리의 다른 글
[백준]2480번:주사위 세개 - java 풀이 (0) | 2023.03.29 |
---|---|
[백준]2525번:오븐 시계 - java 풀이 (0) | 2023.03.27 |
[백준]14681번:사분면 고르기 - java 풀이 (0) | 2023.03.26 |
[백준]9498번:시험 성적 - java 풀이 (0) | 2023.03.25 |
[백준]1330번: 두 수 비교하기 - java 풀이 (0) | 2023.03.25 |