ABOUT ME

Today
Yesterday
Total
  • 백준 2753번 윤년
    카테고리 없음 2021. 7. 14. 15:37

    조건 : 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때

     -> 4의 배수 && 100의 배수가 아님

     -> 또는( || )

     -> 400의 배수임

    나는 조건을 이렇게 해석해서 if문에 이대로 조건식을 넣었다.

    (year % 4 == 0 && year % 100 != 0)|| year % 400 == 0

     

    다른 풀이들을 보니 여러가지 방법이 있었다.

    year % 4 == 0 && (year % 100 != 0 ||  year % 400 == 0)
    if(year % 4 == 0) {
    	if(year % 400 == 0) --> 4의 배수이면서 400의 배수인 경우 1 출력
    	else if(year % 100 == 0) --> 4의 배수이면서 100의 배수인 경우 0 출력
        else --> 4의 배수인 경우 1 출력 
    } else {
    	--> 4의 배수가 아닌 경우 0 출력
    }
    if(year % 4 == 0) { //4의 배수이면서
    	if(year % 100 != 0 || year % 400 == 0) { //100 배수가 아니거나, 400의 배수이면
        	--> 1 출력
        } else { //100의 배수이고 400의 배수가 아닌 경우
        	
        }
    } else { // 4의 배수가 아니면
    	--> 0 출력
    }

    삼항연산자

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

     

    나는 이렇게 풀었다.

    import java.util.Scanner;
    
    public class Main {
    
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
    
        int year = sc.nextInt();
    
        if((year % 4 == 0 && year % 100 != 0)|| year % 400 == 0) {
          System.out.println("1");
        } else {
          System.out.println("0");
        }
      }
    
    }

     

    이 풀이가 메모리와 시간이 썩 좋게 나오지는 않았다.

     

    댓글

Designed by Tistory.