지구가 태양을 한 번 공전하면 1년이 흐릅니다.
이 시간을 정확히 말하자면 365일 5시간 48분 46초가 걸립니다.
하지만 우리는 대충 퉁쳐서 365일이라고 생각하기로 했습니다.
그런데 남아있는 5시간 48분 46초는 어디로 간걸까요?
지구가 차곡차곡 적립해서 4년에 한 번씩 2월을 하루 늘려줍니다.
그래서 4년마다 한 번 2월이 29일이 되는 해가 찾아오고, 이를 윤년이라고 부릅니다.
그런데 아직도 의문이 남아있습니다.
4년에 한 번씩 2월을 하루 늘리면 11분 정도가 초과되게 됩니다.
초과된 11분은 131년이 지나면 하루가 됩니다.
이걸 다시 모으면 대략 400년에 3일이 됩니다.
그래서 100년마다 한 번씩 윤년을 없애고, 400년마다 다시 하루를 추가해 윤년을 둡니다.
좀 복잡하죠?
이걸 정리하면 아래와 같습니다.
1. 연도가 4로 나누어 떨어지면 윤년.
2. 연도가 100으로 나누어 떨어지면 평년.
3. 연도가 400으로 나누어 떨어지면 윤년.
이걸 코드로 변환하면 아래와 같습니다.
(year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)
이제 이 코드를 조건으로 윤년인지 평년인지 출력하는 자바 코드를 작성하겠습니다.
int year = 2023;
if ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){
System.out.println("윤년");
} else {
System.out.println("평년");
}
정수형 변수 year에 판별하고 싶은 연도를 입력하면 조건문에 의해서 윤년인지 평년인지 판별해주는 코드입니다.
백준 2753번 문제는 자바를 이용해 윤년과 평년을 구분하는 것이 문제입니다.
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
if ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)){
System.out.println("1");
} else {
System.out.println("0");
}
}
}
Scanner를 이용해 연도를 입력받을 수 있도록 코드를 수정하고,
윤년이면 1을, 평년이면 0을 출력하도록 코드를 수정하면 됩니다.
'코딩 > Java' 카테고리의 다른 글
@Slf4j로 스프링 애플리케이션에 로그 남기기 (0) | 2023.07.10 |
---|---|
[Java] 369 게임 알고리즘 (0) | 2023.06.01 |