자바

요일 구하기, 윤년

열곰탱 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이 순서대로 일요일,월,화,수,목,금,토 가 됩니다.

 

 

결과값