문제
알고리즘
- 반복문을 통해 D-Day를 카운트한다.
- 매 순간 현재 날짜, 현재 월, 년도를 확인하고 카운트한다.
- 확인하는 과정으로는 현재 월의 마지막 날짜인지, 마지막 달의 마지막 날짜인지, 윤년과 평년인지 확인한다.
- 현재 날짜와 마지막 날짜가 같다면 D-Day를 출력하고 반복문을 멈춘다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
public static Boolean isDay(int year){
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 현재 날짜 입력 받음.
String[] current = br.readLine().split(" ");
int currentYear = Integer.parseInt(current[0]);
int currentMouth = Integer.parseInt(current[1]);
int currentDay = Integer.parseInt(current[2]);
// 마지막 날짜 입력 받음.
String[] last = br.readLine().split(" ");
int lastYear = Integer.parseInt(last[0]);
int lastMonth = Integer.parseInt(last[1]);
int lastDay = Integer.parseInt(last[2]);
int dDay = 0;
// 날짜가 오버 되었다면 "gg" 출력
if(currentYear+1000 < lastYear || currentYear+1000 == lastYear && currentMouth<lastMonth
||currentYear+1000==lastYear && currentMouth==lastMonth && currentDay<=lastDay){
System.out.println("gg");
// 아니라면
} else {
// 반복문을 통해 D-Day 카운트
while(true){
currentDay++;
dDay++;
if(currentDay > 31 && (currentMouth == 1 || currentMouth == 3 || currentMouth == 5 || currentMouth ==7||
currentMouth == 8 || currentMouth == 10 || currentMouth == 12 )){
currentMouth++;
currentDay = 1;
}else if( currentDay > 30 && (currentMouth == 4 || currentMouth == 6 || currentMouth == 9 ||
currentMouth == 11)){
currentMouth++;
currentDay = 1;
}else if(currentDay > 29 &¤tMouth == 2 && isDay(currentYear)){
currentMouth++;
currentDay = 1;
}else if(currentDay > 28 &¤tMouth == 2 && !isDay(currentYear)) {
currentMouth++;
currentDay = 1;
}
if (currentMouth > 12) {
currentYear++;
currentMouth = 1;
}
if(currentYear == lastYear && currentMouth == lastMonth && currentDay == lastDay){
System.out.println("D-"+dDay);
break;
}
}
}
}
}
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1337번(코틀린): 올바른 배열 (0) | 2022.08.16 |
---|---|
[baekjoon] 백준 1337번(파이썬): 올바른 배열 (0) | 2022.08.16 |
[baekjoon] 백준 2960번(자바): 에라토스테네스의 체 (0) | 2022.08.14 |
[baekjoon] 백준 11723번(자바): 집합 (0) | 2022.08.13 |
[baekjoon] 백준 1205번(파이썬): 등수 구하기 (0) | 2022.08.10 |