[백준 02730] 오늘은 OS 숙제 제출일 [Java]
2025. 7. 21. 12:26ㆍPS 풀이/Baekjoon Online Judge
문제
풀이
문제 요약
마감일 정보와, 보고서의 제출일 정보가 주어졌을 때, 채점 기준에 따라 채점 해야하는 유요한 보고서인지 판별하자.
아이디어
문자열로 된 날짜를 정수로 변환하고, 마감일의 연도를 기준으로 제출일 연도를 유추했다.
static final int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static int toDays(int y, int m, int d) {
int days = d;
for (int i = 0; i < m - 1; i++) {
days += monthDays[i];
}
if (m > 2 && isLeap(y)) days += 1;
days += 365 * (y - 1);
days += (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400;
return days;
}
두 날짜 간 차가 가장 작도록 날짜를 구했으며, 채점 여부를 결정해주면 된다.
int bestDiff = Integer.MAX_VALUE;
int bestSignedDiff = 0;
String bestDate = null;
// Solve
for (int y = deadMonth - 1; y <= deadYear + 1; ++y) {
if (!isValid(y, deadMonth, deadDay)) {
continue;
}
final int reportDays = toDays(y, reportMonth, reportDay);
final int diff = Math.abs(deadDays - reportDays);
if (diff < bestDiff) {
bestDiff = diff;
bestSignedDiff = reportDays - deadDays;
bestDate = reportMonth + "/" + reportDay + "/" + y;
}
}
풀이 시간
30분
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/normal/02730.java
problem-solving/baekjoon-online-judge/normal/02730.java at main · rogi-rogi/problem-solving
Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.
github.com
'PS 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
| [백준 30647] 점수 관리 [Java] (1) | 2025.07.23 |
|---|---|
| [백준 33690] 포린드롬 [Java] (1) | 2025.07.22 |
| [백준 18243] Small World Network [Java] (1) | 2025.07.20 |
| [백준 32284] 오늘부터 우리는 (Me gustas tu) [Java] (0) | 2025.07.19 |
| [백준 13414] 오셀로 재배치 [Java] (2) | 2025.07.18 |