package k20231206;

import java.util.Iterator;
import java.util.Scanner;
public class WeekdayTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("요일을 알고 싶은 년, 월, 일을 입력하세요: ");
int year = scanner.nextInt();
int month = scanner.nextInt();
int day = scanner.nextInt();
// boolean isLeapYear = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ;
// 서기 1년 1월 1일(월요일)부터 요일을 계산하기 위해 입력한 날짜까지 지난 날짜 수를 계산한다.

// 계산된 날짜수를 7로 나눈 나머지가 0이면 일요일, ... 6이면 토요일
// 서기 1년 1월 1일부터 입력한 날짜의 전년도 12월 31일 까지 지난날짜를 계산한다.

// int sum = (year - 1) * 365;
// for (int i = 1; i<year; i++ ) {
// if (isLeapYear) {
// sum++;
// }
// }
int sum = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
// 전년도 12월 31일까지 지난 날짜 수에 전달까지 지난 날짜를 더한다.
int[] m = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
m[1] = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29:28;
for (int i = 1; i<month; i++) {
sum += m[i-1];
}
// 이번달 날짜를 더해준다
sum += day;
char[] c = {'일', '월', '화', '수', '목', '금', '토'};
// 숫자를 요일 표기로 바꿔준다.
System.out.println(year + "년 " + month + "월 " + day + "일은 " + "서기 1월 1일부터 " + sum +"일째 되는 날입니다.");
System.out.print(year + "년 " + month + "월 " + day + "일은 " + c[sum%7] + "요일입니다."); // 2022년 12월 31일은 토요일(6)
}
}

'java&eclipse 코딩 알고리즘 > 20231206' 카테고리의 다른 글
| WeekdayTest2 (0) | 2023.12.14 |
|---|---|
| StringTest (0) | 2023.12.14 |
| StringMethodTest (0) | 2023.12.14 |
| SosooTest (0) | 2023.12.14 |
| SooinsooTest (0) | 2023.12.14 |