자바
요일 구하기, 윤년
열곰탱
2022. 7. 28. 17:51
전체 코드
package ex06;
import java.util.Scanner;
public class Year {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("연도를 입력하세요: ");
int year = scanner.nextInt();
System.out.print("월을 입력하세요: ");
int month = scanner.nextInt();
System.out.print("일을 입력하세요: ");
int day = scanner.nextInt();
int total_days = 0;
total_days += (year - 1900)*365;
total_days += (year - 1900)/4;
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
if(month == 2 || month == 1 )
total_days -= 1;
}
if(month == 1) {
total_days += day;
} else if(month == 2) {
total_days += 31 + day; //31
} else if(month == 3) {
total_days += 59 + day; // 28
} else if(month == 4) {
total_days += 90 + day; // 31
} else if(month == 5) {
total_days += 120 + day; // 30
} else if(month == 6) {
total_days += 151 + day; // 31
} else if(month == 7) {
total_days += 181 + day; // 30
} else if(month == 8) {
total_days += 212 + day; // 31
} else if(month == 9) {
total_days += 243 + day; // 31
} else if(month == 10) {
total_days += 273 + day; // 30
} else if(month == 11) {
total_days += 304 + day; //31
} else {
total_days += 334 + day; //30
}
System.out.println(total_days%7);
if(total_days%7 ==0) {
System.out.println(year + "년 " + month + "월" + day + "일은 일요일입니다.");
} else if(total_days%7 ==1) {
System.out.println(year + "년 " + month + "월" + day + "일은 월요일입니다.");
} else if(total_days%7 ==2) {
System.out.println(year + "년 " + month + "월" + day + "일은 화요일입니다.");
} else if(total_days%7 ==3) {
System.out.println(year + "년 " + month + "월" + day + "일은 수요일입니다.");
} else if(total_days%7 ==4) {
System.out.println(year + "년 " + month + "월" + day + "일은 목요일입니다.");
} else if(total_days%7 ==5) {
System.out.println(year + "년 " + month + "월" + day + "일은 금요일입니다.");
} else if(total_days%7 ==6) {
System.out.println(year + "년 " + month + "월" + day + "일은 토요일입니다.");
}
}
}
코드 특징
윤년은 4년마다 오고, 100년마다 오지 않는다. 또한 400년에 한번씩 옵니다.
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
윤달이 있는 달이 2월이기 때문에, 만약 윤년이 있는 년도이고 1월 또는 2월이면 하루를 전체 일수에서 뺀다.
if(month == 2 || month == 1 )
total_days -= 1;
전체 일수에서 7로 나눈 나머지가 0~6이 순서대로 일요일,월,화,수,목,금,토 가 됩니다.
결과값