chavdardim1990

Cherry Blossom TLE

Nov 28th, 2023
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. package com.company.tasks;
  2.  
  3. import java.time.LocalDate;
  4. import java.time.format.DateTimeFormatter;
  5. import java.util.Scanner;
  6.  
  7. public class CherryBlossom {
  8. public static void main(String[] args) {
  9. Scanner scanner = new Scanner(System.in);
  10. //your code here
  11.  
  12. String blossomDateInput = scanner.nextLine();
  13. LocalDate blossomDate = parseDate(blossomDateInput);
  14.  
  15. int averageTemperature = Integer.parseInt(scanner.nextLine());
  16.  
  17. int rain = Integer.parseInt(scanner.nextLine());
  18.  
  19. int winterLength = Integer.parseInt(scanner.nextLine());
  20.  
  21. LocalDate exactBlossomDate = calculateBlossomDate(blossomDate, averageTemperature, rain, winterLength);
  22.  
  23. String formattedDate = formatDate(exactBlossomDate);
  24. System.out.println(formattedDate);
  25. }
  26.  
  27. private static LocalDate parseDate(String dateInput) {
  28. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
  29. return LocalDate.parse(dateInput, formatter);
  30. }
  31.  
  32. private static String formatDate(LocalDate date) {
  33. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMMM yyyy");
  34. return date.format(formatter);
  35. }
  36.  
  37. private static LocalDate calculateBlossomDate(LocalDate expectedBlossomDate, int averageTemperature, int rain, int winterLength) {
  38. int temperatureDifference = averageTemperature - 20;
  39. int rainDifference = Math.abs(rain - 30) / 3;
  40. int leapYearTemperatureOffset = isLeapYear(expectedBlossomDate.getYear()) ? 5 : 0;
  41.  
  42. int daysToAdd = winterLength + temperatureDifference + rainDifference + leapYearTemperatureOffset;
  43. return expectedBlossomDate.plusDays(daysToAdd);
  44. }
  45.  
  46. private static boolean isLeapYear(int year) {
  47. return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
  48. }
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment