```
백준 25024번 시간과 날짜 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 25024번 풀이
https://www.acmicpc.net/problem/25024
25024번: 시간과 날짜
각 테스트케이스 마다 두 문자열을 공백 하나로 구분하여 출력한다. 첫 번째 문자열은 두 정수 $x$, $y$를 $x$시 $y$분으로 읽는 것이 가능하면 “Yes”, 가능하지 않으면 “No”여야 한다. 두 번째 문
www.acmicpc.net
백준 25024번 시간과 날짜는
난이도 브론즈 등급의 문제로서
테스트 케이스만큼 숫자 A와 B가 주어지면
해당되는 A와 B 가
A시 B분 그리고 A월 B일로 표기가 가능한지 확인해서
Yes No로 각각의 경우마다 표기해주면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
Reactive 하게 프로그래밍을 해봤습니다.
해당되는 조건에 맞게 isValidDate 와 isValidTime이라는 메서드를 만들어서
비교 후에 출력하였습니다.
코드 길이를 줄이기 위해서 isValidDate안에 스위치 문 대신에
배열로 {0,31,29,31,30...} 으로 표시해서 비교 문을 써서 10줄이 넘는 코드를 두줄로 줄이는 것도 좋은 방향이라 생각합니다.
public class Main {
// BufferedReader Object 생성
static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
// 입력
final int testCaseSize = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
IntStream.range(0, testCaseSize).forEach((i) -> {
try {
sb.append(isValidDateAndTime());
} catch (IOException e) {
e.printStackTrace();
}
});
// 출력
sb.setLength(sb.length() - 1);
System.out.print(sb);
}
private static String isValidDateAndTime() throws IOException {
StringTokenizer st = new StringTokenizer(br.readLine());
final int num1 = Integer.parseInt(st.nextToken());
final int num2 = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
if (isValidTime(num1, num2)) {
sb.append("Yes ");
} else {
sb.append("No ");
}
if (isValidDate(num1, num2)) {
sb.append("Yes\n");
} else {
sb.append("No\n");
}
return sb.toString();
}
private static boolean isValidTime(int num1, int num2) {
return (num1 < 24 && num1 >= 0) && (num2 < 60 && num2 >= 0);
}
private static boolean isValidDate(int num1, int num2) {
boolean isValidDate = false;
switch (num1) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (num2 > 0 && num2 <= 31) {
isValidDate = true;
}
break;
case 2:
if (num2 > 0 && num2 <= 29) {
isValidDate = true;
}
break;
case 4:
case 6:
case 9:
case 11:
if (num2 > 0 && num2 <= 30) {
isValidDate = true;
}
break;
default:
break;
}
return isValidDate;
}
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 16171번 나는 친구가 적다 (Small) JAVA 구현해보기 (0) | 2022.05.10 |
|---|---|
| 백준 18883번 N M 찍기 JAVA 구현해보기 (0) | 2022.05.10 |
| 백준 25083번 새싹 JAVA 구현해보기 (0) | 2022.05.09 |
| 백준 1173번 운동 JAVA 구현해보기 (0) | 2022.05.09 |
| 백준 1236번 성 지키기 JAVA 구현해보기 (0) | 2022.05.08 |