본문 바로가기
study/CodingTest

백준 2753 윤년 판별 (Java)

by 고기만두(개발자) 2021. 11. 5. 00:39
728x90
반응형

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.

출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.


import java.util.*;

public class Main{
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
        
        int year = sc.nextInt();
        sc.close();
        
        String ret = "";    //결과값 
        
        if(year % 4 == 0){    //4의 배수 중
            
            if(year % 100 == 0){    //100의 배수이면 윤년이 아님
                
                if(year % 400 == 0){    //그러나 400의 배수이면 윤년
                    ret = "1";
                } else {
                    ret = "0";    //4의배수 중 100의 배수인데, 400의 배수는 아닌 경우 윤년이 아님
                }
                
            } else {
                ret = "1";    //100의배수가 아닌 4의배수는 윤년
            }
        } else {    //4의 배수가 아니면 윤년 아님
           ret = "0";
        }
        
        System.out.println(ret);
        
        
    }
}

케이스 차분하게 분리해주면 어려울 게 없는 문제

 

개인적으로는 실무에서 코딩할 때

return 을 여러번 사용하는 걸 별로 좋아하지 않는 편이다.

물론 이미 누더기가 된 소스를 기우려면 어쩔 수 없지만

내가 신규로 개발하는 건에 한해서는 최대한 안 그러려고 노력한다.

 

sout은 업무에서 쓸 일이 없지만, 이것 역시도 그렇다.

결과값 정리해서 한방에 찍어주는 스타일이다.

728x90
반응형

댓글