본문 바로가기

자바

백준 알고리즘 - 2753번 윤년 [자바]

<문제 풀이>

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();

		if (a % 4 == 0) {
			if (a % 400 == 0 || a % 100 != 0) {
				System.out.print(1);

			} else {
				System.out.print(0);
			}
		} else {
			System.out.print(0);
		}
	}
}

일단 먼저 윤년이 뭔지 파악하는게 필요했다.

4배의 배수 이면서, 100의 배수가 아닐 때 또는 400의 배수일 때 윤년이라고 하는데 

위의 조건이 모두 만족하면 1을 출력하는 문제였다.

제일 먼저 만들어야 할 조건은 "4의 배수일 때"이다. 

4의 배수임을 먼저 확인을 하고 박스 안으로 들어가서 다시 한번 100의 배수가 아님과 400의 배수라는 조건을 만들어야한다.

왜냐하면 4의 배수 이면서 문장에서 "이면서" 때문이다.

4의 배수다 라는 조건은 100의 배수가 아님과 400의 배수이기 이전에 충족을 해야하고 그 충족한 상태에서 나머지 조건을 충족해야하기 때문에 박스 안에서 해결해야한다. 

그래서 박스 바깥에서 조건을 계속 충족 시켜나가는 것이 아닌 한 개의 박스 안에서 모든 조건을 충족해야하는 그런 문제였다.