
-Code
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class BOJ10426 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String date = sc.next();
int add = sc.nextInt();
// 년월일 분리
String[] parts = date.split("-");
int year = Integer.parseInt(parts[0]);
int month = Integer.parseInt(parts[1]);
int day = Integer.parseInt(parts[2]);
// add가 1이면 당일이 기념일이므로 1을 빼서 보정
add--;
// 1씩 빼면서 분리
while (add > 0) {
day++;
if (day > monthDays(year, month)) {
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
}
}
add--;
}
System.out.println(String.format("%d-%02d-%02d", year, month, day));
}
// 월에 따른 일 수 배열 반환
static int monthDays(int year, int month) {
int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) return 29;
return monthDays[month - 1];
}
// 윤년 계산
static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
원래 월 계산으로 1이 아닌 월 기준으로 빼서 구하려 했으나 어차피 O(N)의 시간 복잡도라 1씩 해도 되어서 1씩 계산하여 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 카펫 (0) | 2025.11.18 |
|---|---|
| [프로그래머스/Java] 귤 고르기 (0) | 2025.11.18 |
| [LeetCode/Java] 14. Longest Common Prefix (0) | 2025.11.18 |
| [LeetCode/Java] 13. Roman to Integer (0) | 2025.11.18 |
| [백준/Java] 34619번 소대 배정 (0) | 2025.11.17 |