출처 : 네이버 

출처 : 네이버에 2021년 7월 검색

 

2021년 7월 : 네이버 통합검색

'2021년 7월'의 네이버 통합검색 결과입니다.

search.naver.com

public static void main(String[] args) {
		// 년, 월 입력 받아 달력 만들기
		Scanner sc = new Scanner(System.in);
		int[] months = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int y, m;
		int tot;
		int w;
		
		do {
			System.out.print("년도 ? ");
			y = sc.nextInt();
		} while(y<1);
		
		do {
			System.out.print("월 ? ");
			m=sc.nextInt();
		} while(m<1 || m>12);
		
		months[1] = (y%4==0 && y%100!=0) || (y%400==1) ? 29 : 28;
		// 윤년이면 2월이 29일 이므로
		tot = (y-1)*365 + (y-1)/4- (y-1)/100 + (y-1)/400; 
		//전체날수
		for(int i=0; i<m-1; i++) {
			tot += months[i];
		}
		tot+= 1;
		// 1년 1월 1일 ~ y년 m월 1일까지 전체 날수
		// 요일 구하기
		w = tot % 7;  // 일~토는 7일 이니까 나누기 7을 하는거.
		System.out.printf("\n\t%d년 %d월\n", y, m);
		System.out.println("   일  월  화   수  목   금   토");
		System.out.println("-------------------------------");
		for(int i=0; i<w; i++) {
			System.out.print("    ");
		} // 첫 주 공백 만들기
		
		for(int i=1; i<=months[m-1]; i++) {
			System.out.printf("%4d", i);
			if(++w % 7 ==0) { // 토요일까지 찍고 행바꾸기
				System.out.println();
			}
		}
		if (w%7 !=0) {
			System.out.println(); // 마지막날이 마지막주 토요일아니면 행바꿔라 
			//아니면 --- 가 마지막 날 옆에 출력
		}
		System.out.println("-------------------------------");
		
		sc.close();
	}

년도가 4의 배수이고 100의 배수가 아니거나 400의 배수이면 2월이 29일, 1년은 366
나머지는 2월이 28일, 1년은 365
서기 1년 1월 1일은 월요일

 

먼저 

1) 1.1.1 ~ 입력한 년.입력한 월.1 

1년 1월 1일 부터 입력한 년의 그 전해 까지의 일수를 구한다. (21년일시 20년 까지의 일수)

 

2) 입력한 년.1.1~입력한 년. 입력한 월.1 

입력한 년 1월 1일 부터 입력한 년의 입력한 월까지의 일수를 구한다. (21년 일시 21년 1월 1일~ 21년 입력한 달까지의 일수)

 

 

 

 

+ Recent posts