CODING TEST/baekjoon

#2753 - 윤년

iamyuunzo 2025. 7. 8. 21:40

📌 문제 정보

- 문제 이름 : #2753번 - 윤년

- 문제 링크: https://www.acmicpc.net/problem/2753

 

 

📌 문제 요약

- 핵심 조건: 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 윤년이면 1, 아니면 0을 출력

- 시간복잡도 제한: 없음

 

 

📌 내 풀이 및 코드

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 % 400 ==0) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}

 

<-- 내가 처음에 어떻게 풀었는지 -->

- 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 라는 말의 '또는'에 꽂혀서 문제를 제대로 안 읽었음.

- 예제 입력과 출력 답은 맞게 나왔으나 다른 조건들에 충족하지 못해서 오답.

 

 

📌 최종 정답 및 풀이

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) || (year % 400 == 0)) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
}

<-- 풀이 요약 -->

** 윤년 문제 조건 **

- (1) 연도가 4의 배수이고 / (2) AND 100의 배수가 아니거나  /   (3) 400의 배수이면 윤년

- (1) year % 4 == 0   /  (2) year % 100 !=0    /   (3) year % 400 ==0

 

 

<-- 다른 풀이 요약 -->

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();

        System.out.println(
            ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? "1" : "0"
        );
    }
}

- 삼항 연산자 버전 : 한 줄 출력이라 짧고 깔끔함.

- 조건 실수 안하면 오류 날 확률 낮음. but 괄호 실수 조심.

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- .