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");
이런 식으로 할 수 있다.
'study > algorithm' 카테고리의 다른 글
[알고리즘] 별 찍기2 - 백준 2439번 (0) | 2024.06.18 |
---|---|
[알고리즘] 별 찍기1 - 백준 2438번 (0) | 2024.06.18 |
[알고리즘] 주사위 세개 - 백준 2480번 (0) | 2024.06.17 |
[알고리즘] 오븐 시계 - 백준 2525번 (0) | 2024.06.14 |
[알고리즘] 알람 시계 - 백준 2884번 (0) | 2024.06.14 |