1. 문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
2. 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int year;
year = sc.nextInt();
if(year%4==0 && year%100!=0) System.out.println("1");
else if(year%4==0 && year%100==0){
if(year%400==0) System.out.println("1");
else System.out.println("0");
}
else System.out.println("0");
sc.close();
}
}
3. 풀이
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
400의 배수는 4의 배수이면서 100의 배수가 된다.
하지만 거꾸로, 4의 배수이면서 100의 배수인 수는 모두 400의 배수는 아니다.
따라서 크게 4의 배수이면서 100의 배수가 아닌 것과 4의 배수이면서 100의 배수인것으로 나누고
4의 배수이면서 100의 배수인 것 중에서 400의 배수인것과 아닌것을 나눈다.
4. 링크
https://www.acmicpc.net/problem/2753
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[JAVA] 백준 2884번 알람시계 (0) | 2020.07.01 |
---|---|
[JAVA] 백준 14681번 사분면 고르기 (0) | 2020.07.01 |
[JAVA] 백준 9498번 시험성적 (0) | 2020.07.01 |
[JAVA] 백준 1330번 두 수 비교하기 (0) | 2020.07.01 |
[JAVA] 백준 2588번 곱셈 (0) | 2020.07.01 |