[★2][백준2753번]윤년 (JAVA)

Date:     Updated:

카테고리:

태그:

[★2][백준2753번]윤년 (JAVA)

2753번 문제 ☞ https://www.acmicpc.net/problem/2753

난이도 ☞ [★2]

윤년

  • 문제
    • 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
      윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
      예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
    • 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
    • 첫째 줄에 윤년이면 1, 아니면 0을 출력한다.

      예제입력 예제출력
      2000 1
      1999 0

내가 푼 풀이

이번 문제도 이전 문제와 같이 입력을 받아 조건을 부여하여 조건에 따라 출력되게 하는 방법인데, 이는 if-else 혹은 if-else if-else를 사용하여 구현하는 것이다. 입력받는 방식은 여러가지가 있지만 제일 쉬운 방식으로 구현하였다. 아직까지는 어렵지는 않는 것 같다.

[ 풀이 1 ]

메모리 : 17732KB
시간 : 208ms

Scanner

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);

		int a = s.nextInt();

		s.close();
		
		if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
			System.out.println("1");

		} else {
			System.out.println("0");
		}

	}

}

위의 방식처럼 할 수도 있지만, BufferedReader를 사용하여 구현을 할 수도 있으며, BufferedReader방식의 코드 구현이다. 아래의 코드를 참고하면 된다.

[ 풀이 2 ]

메모리 : 14240KB
시간 : 128ms

BufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int a = Integer.parseInt(br.readLine());

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

		} else {
			System.out.println("0");
		}

	}

}

[참고]

각 문제의 if문에 대한 설명이다. 위의 if문들을 보면 아래 코드와 같이 구현이 되어 있습니다.

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

		} else {
			System.out.println("0");
		}

하지만 위의 if문처럼 말고 변형을 주어 if문을 구현하여 출력 할 수 있다. 그 코드는 다음 아래와 같다.

	if (a % 4 == 0) {
			if (a % 400 == 0) {
				System.out.println("1");
			} else if (a % 100 == 0) {
				System.out.println("0");
			} else {
				System.out.println("1");
			}
		} else {
			System.out.println("0");
		}

이와 같이 줄 수도 있다. 여기서 주의깊게 봐야할 구문은 ==이냐 아니면 !=이냐를 잘 봐야할 것 같다. 위의 문제들처럼 if문을 풀어서 작성하여도 좋고, 아니면 삼항 연산자를 사용하여 구현하여도 된다. Scanner로 예시를 들면 아래와 같다.

[ 풀이 3 ]

메모리 : 17724KB
시간 : 212ms

Scanner

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);

		int a = s.nextInt();

		s.close();
		
		if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) {
			System.out.println("1");

		} else {
			System.out.println("0");
		}

	}

}

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기