結果
| 問題 |
No.721 Die tertia (ディエ・テルツィア)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-10-10 22:32:05 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 128 ms / 2,000 ms |
| コード長 | 1,781 bytes |
| コンパイル時間 | 3,920 ms |
| コンパイル使用メモリ | 79,948 KB |
| 実行使用メモリ | 41,800 KB |
| 最終ジャッジ日時 | 2024-10-12 17:23:06 |
| 合計ジャッジ時間 | 7,211 ms |
|
ジャッジサーバーID (参考情報) |
judge / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 |
ソースコード
package yukicoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class DieTeria {
static Map<Integer, Integer> lastDay = new HashMap<Integer, Integer>() {
{
put(1, 31);
put(2, 28);
put(3, 31);
put(4, 30);
put(5, 31);
put(6, 30);
put(7, 31);
put(8, 31);
put(9, 30);
put(10, 31);
put(11, 30);
put(12, 31);
}
};
// 日付をn日後に進める。
static int n = 2;
public static void main(String[] args) {
// 標準入力から読み込む際に、Scannerオブジェクトを使う。
Scanner sc = new Scanner(System.in);
String s = sc.next();
int year = Integer.parseInt(s.split("/")[0]);
int month = Integer.parseInt(s.split("/")[1]);
int day = Integer.parseInt(s.split("/")[2]);
// int year = 2001;
// int month = 2;
// int day = 27;
if (isUruu(year)) {
lastDay.put(2, 29);
}
if (isOverEndOfMonth(month, day + n)) {
day = reCalucurateDay(month, day + n);
if (isOverEndOfYear(year, month + 1)) {
month = reCalucurateMonth(month);
year++;
} else {
month++;
}
} else {
day += n;
}
System.out.println(String.format("%04d/%02d/%02d", year, month, day));
}
static boolean isUruu(int year) {
if (year % 400 == 0) {
return true;
} else if (year % 100 == 0) {
return false;
} else if (year % 4 == 0) {
return true;
}
return false;
}
static int reCalucurateDay(int month, int day) {
return day - lastDay.get(month);
}
static int reCalucurateMonth(int month) {
return 1;
}
static boolean isOverEndOfMonth(int month, int day) {
return (day > lastDay.get(month));
}
static boolean isOverEndOfYear(int year, int month) {
return (month > 12);
}
}