728x90
반응형
안녕하세요 놀이방사장입니다.
이번 포스팅은
백준 1308 D-day 포스팅
자바 풀이입니다.
1308번: D-Day
첫째 줄에 오늘의 날짜가 주어지고, 두 번째 줄에 D-Day인 날의 날짜가 주어진다. 날짜는 연도, 월, 일순으로 주어지며, 공백으로 구분한다. 입력 범위는 1년 1월 1일부터 9999년 12월 31일 까지 이다.
www.acmicpc.net
현재날짜부터 D-day를 입력으로 주면 이 두 날짜의 차이를 출력하면 된다.
근데 이 두 날짜의 차이가 1000년이 넘을 시 gg를 출력한다.
먼저 처음에는 자바에서 제공하는
LocalDate와 LocalDateTime , Period를 이용해서 풀려고 했는데 윤년때문에 계산이 틀려짐
package me.joyeonggyu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static int[] getYear(int year){
int[] month = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31};
if(year%4==0 && year%100 != 0 || year%400==0){
month[1] = 29;
}
return month;
}
public static int getDays(int year, int month , int day){
int days = 0;
int[] months;
// 각 년도 계산
for(int i=1; i<year; i++){
months = getYear(i);
for(int j=0; j<12; j++){
days += months[j];
}
}
// 남은 월 계산
months = getYear(year);
for(int i=0; i< month-1; i++){
days += months[i];
}
days+=day;
return days;
}
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] Tdate = br.readLine().split(" ");
String[] Ddate = br.readLine().split(" ");
int Tyear = Integer.parseInt(Tdate[0]);
int Tmonth = Integer.parseInt(Tdate[1]);
int Tday = Integer.parseInt(Tdate[2]);
int Dyear = Integer.parseInt(Ddate[0]);
int Dmonth = Integer.parseInt(Ddate[1]);
int Dday = Integer.parseInt(Ddate[2]);
int Tdays = getDays(Tyear, Tmonth , Tday);
int Ddays = getDays(Dyear, Dmonth , Dday);
if( (Dyear - Tyear > 1000) || (Dyear - Tyear == 1000 && Dmonth - Tmonth > 0) || (Dyear - Tyear == 1000 && Dmonth - Tmonth == 0 && Dday - Tday >= 0) ){
bw.write("gg");
}else{
bw.write("D-" + (Ddays - Tdays));
}
bw.flush();
bw.close();
}
}
이 풀이는 1년1월1일부터 -> 함수를 넣은 시간까지 일수를 구해줌
그럼 오늘이랑 D-day의 일수가 각각 구해지고 그걸 뺴주면 됨
그 전에 1000년이상 차이나면 gg를 출력해야하기 때문에 예외처리 해주는 거 까먹으면 안됨
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준]1340 - 연도 진행바 - JAVA (0) | 2023.12.05 |
---|---|
[백준]1312 - 소수 - JAVA (1) | 2023.12.04 |
백준[1251] 단어나누기 - 자바(JAVA) (1) | 2023.12.02 |
백준11650 - 좌표정렬 (0) | 2023.12.01 |
[1436]백준 - 영화감독 숌 - JAVA (0) | 2023.11.28 |