study/algorithm

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

박허디 2024. 6. 14. 11:00

https://www.acmicpc.net/problem/2753

 

윤년의 조건은 4의 배수는 윤년으로 1을 출력하지만 100의 배수일 때는 윤년이 아니어서 0을 출력한다.

그러나 400의 배수일 경우에는 윤년으로 본다.

 

따라서 4의 배수인지 확인 후 4의 배수일 경우 400으로 나눠 떨어지는지, 100으로 나눠 떨어지는지를 확인해야 한다.

 

1 ) 4의 배수일 때 : if( year % 4 == 0 ) 

    ** 4의 배수인 경우 내부 블록 실행

    2 - 1 ) 4의 배수이면서 400의 배수일 때 : if( year & 400 == 0 ) 

    ** 내부 ** 400의 배수 맞는지 확인 ( 1출력 )

    2 - 2 ) 4의 배수이면서 100의 배수일 때 : else if ( year % 100 == 0 ) 

    ** 내부 **   100의 배수인지 확인, 100의 배수이지만 400의 배수는 아닌 경우 ( 0 출력 )

    2 - 3 ) 2단계 조건식 나머지 else

    ** 내부 **   일반적인 4의 배수인 경우 ( 1 출력 )

1 - 2 ) 1단계 조건식 나머지 else

    **  외부 **  - 4의 배수가 아닌 경우 ( 0 출력 )

 

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

public class Main {
    
    public static void main(String[] args) throws IOException{
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int year = Integer.parseInt(br.readLine());
        
        if( year % 4 == 0 ){
            if( year % 400 == 0 ) System.out.println("1");
            else if ( year % 100 == 0 ) System.out.println("0");
            else System.out.println("1");
        }
        else System.out.println("0");
    }
}


//삼항연산자
//System.out.print((year%4==0)?((year%400==0)?"1":(year%100==0)?"0":"1"):"0");

 

이런 식으로 할 수 있다.