IT/알고리즘
1일 1코딩
So1_b
2022. 4. 10. 14:17
package basic.data_tructure;
import java.util.Scanner;
public class Q11 {
int y; //년도
int m; //월
int d; //일
static int[][] days= {
{31,28,31,30,31,30,31,31,30,31,30,31}, //평년 mday[0]
{31,29,31,30,31,30,31,31,30,31,30,31} //윤년 mday[1]
};
Q11(int y, int m, int d){ //생성자
this.y=y;
this.m=m;
this.d=d;
}
//평년, 윤년 확인하는 메서드
//평년:0반환, 윤년:1반환
int isLeap(int year) {
return (year%4==0 && year%100!=0||year%400==0)?1:0;
}
//n일 뒤의 날짜를 반환
void YMDafter(int n){
int num=isLeap(y); //평년,윤년 확인
System.out.println(y+"년도");
if (num==0) System.out.println("평년입니다.");
else if (num==1) System.out.println("윤년입니다.");
d+=n;
while(d>days[num][m-1]) {
d=d-days[num][m-1]; //일수정리
m++;
if(m>12) { //달이 12월이 넘었을 때
y++;
num=isLeap(y); //윤년평년 확인.
m=m-12; //월 변경
}
}System.out.printf("%d일 후: %d년도 %d월 %d일 입니다.\n",n,y,m,d);
return;
}
//n일 앞의 날짜를 반환
void YMDbefore(int n) {
int num=isLeap(y);
d-=n;
while(d<1) { //일수가 음수일 때
m--; //월 감소
if(m<1) { //월이 음수가 되면 년도 변경
y--;
num=isLeap(y);
m=12+m;
}
d=days[num][m-1]+d;
}System.out.printf("%d일 전: %d년도 %d월 %d일 입니다.",n,y,m,d);
return;
}
public static void main(String[] args) {
Q11 ymd=new Q11(2021, 12, 1);
ymd.YMDafter(62);
ymd.YMDbefore(62);
}
}