728x90
//오류 코드 : 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 bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
StringTokenizer st = new StringTokenizer(str," ");
int H = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int alarm = 45;
if (M>45) {
M = M-alarm;
}
else {
H--;
M = 60 - (alarm - M);
if (H < 0){
H = 23;
}
}
System.out.println(H + " " + M);
}
}
위와 같이 코드를 작성하였는데 오류가 나왔다. 이유는 M>45 으로 조건을 걸어두었는데 45를 넣으면 else 문으로 넘어가서 오류가 나게 되었다. 45일때 0분으로 나와야 하기 때문에 M>=45로 하거나 M<45 로 해야한다.
테스트 검사중에서도 경계값 검사가 있는데 M>45라고 가정하면 46,45,44 3가지의 테스트 를 하는 것이다.
경계값에서 실수를 많이 하기 때문에 이 부분을 항상 생각하며 코드를 작성하자.
//정상 코드 : 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 bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
int H = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int alarm = 45;
if (M < 45) {
H--;
M = 60 - (alarm - M);
if (H < 0){
H = 23;
}
}
else {
M = M-alarm;
}
System.out.println(H + " " + M);
}
}
728x90
'알고리즘 풀이 > 백준' 카테고리의 다른 글
Java - [백준] 3052번 나머지 (0) | 2022.09.09 |
---|---|
Java - [백준] 11021 A+B -7 (0) | 2022.09.02 |
Java - [백준] 8393번 합 (0) | 2022.08.26 |
Java - [백준]2525 오븐 시계 (0) | 2022.08.23 |
JAVA - [백준] 2588번 곱셈 (0) | 2022.07.15 |
댓글