[C] 백준 2753번 : 윤년

2020. 5. 30. 04:14

 

 

년도가 주어졌을 때 윤년인지 아닌지를 판단하는 코드를 짜는 문제로, 문제는 아래와 같다.

 

 

백준 2753번

 

위 문제를 해결하기 위해서는 if문을 활용해서 코드를 작성하면 되며 세가지 조건을 고려해야 한다.

1) 연도가 4의 배수일 때 윤년이다.

2) 연도가 100의 배수가 아닐 때 윤년이다.

3) 하지만 연도가 400의 배수일 때는 윤년이다.

 

따라서 다음과 같이 코드를 작성하면 해결된다.

#include <stdio.h>

int main(){
	int year;
	
	scanf("%d", &year);
	
    //연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
    if(1 <= year && year <= 4000){ 
        //연도가 4의 배수이면서 100의 배수가 아닐 때 윤년이므로 1을 출력한다.
        if(year%4==0 && year%100 !=0){ 
			printf("1");
		}
        //하지만 연도가 400의 배수일 때도 윤년이므로 1을 출력한다.
        else if(year%400 == 0){ 
			printf("1");
		}
        //위의 조건들을 충족하지 못하면 윤년이 아니므로 0을 출력한다.
        else { 
			printf("0");
		}
	}
	else {
		printf("ERROR");
	}
}

 

처음에 코드를 작성했을 때, else if 의 조건을 걸지 않아서 2000을 입력했을 때 0이라는 결과값을 얻었다.

다시 문제를 확인해보고 400의 배수일 경우 윤년이라는 조건을 다시 추가하였더니 제대로 작동했다.

 

BELATED ARTICLES

more