結果
| 問題 |
No.188 HAPPY DAY
|
| コンテスト | |
| ユーザー |
SaYa
|
| 提出日時 | 2015-11-05 23:36:44 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 294 ms / 1,000 ms |
| コード長 | 1,494 bytes |
| コンパイル時間 | 3,253 ms |
| コンパイル使用メモリ | 90,304 KB |
| 実行使用メモリ | 43,792 KB |
| 最終ジャッジ日時 | 2024-12-30 20:46:34 |
| 合計ジャッジ時間 | 4,663 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 |
ソースコード
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int yearTotalHappyDay = IntStream.rangeClosed(1, 12)
.mapToObj(Month::of)
.mapToInt(Month::getTotalHappyDay)
.sum();
System.out.println(yearTotalHappyDay);
}
private static class Month {
private int month;
private int maxDay;
private Month(int month, int maxDay) {
this.month = month;
this.maxDay = maxDay;
}
public static Month of(int month) {
int maxDay = new GregorianCalendar(2015, (month - 1), 1).getActualMaximum(Calendar.DAY_OF_MONTH);
return new Month(month, maxDay);
}
public int getTotalHappyDay() {
return IntStream.rangeClosed(1, maxDay)
.mapToObj(day -> isHappyDay(month, day))
.mapToInt(happyDay -> (happyDay) ? 1 : 0)
.sum();
}
private Boolean isHappyDay(int month, int day) {
String twoDigitsDay = String.format("%02d", day);
String tensPlace = twoDigitsDay.substring(0, 1);
int tensPlaceNum = tensPlace.isEmpty() ? 0 : Integer.parseInt(tensPlace);
int onesPlaceNum = Integer.parseInt(twoDigitsDay.substring(1, 2));
return (month == (tensPlaceNum + onesPlaceNum));
}
}
}
SaYa