본문 바로가기
알고리즘 Node.js

백준 2753문제. 윤년

by 반갑조? 2025. 2. 26.

문제

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

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

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

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

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

예제 입력: 2000 또는 1999

예제 출력: 1 또는 0

 

풀이

const fs = require('fs');
const a = parseInt(fs.readFileSync('/dev/stdin').toString().trim());
if(a%4===0 && a%100!==0 || a%400===0){
  console.log("1");
}else{
  console.log("0");
}

 

풀이 해석

1. 윤년 판별 조건

- 조건1:  a%4===0 && a%100!==0 

            - 4의 배수이면서 100의 배수가 아니다.

- 조건2:  a%400===0

            - 400의 배수이다.

- 둘 중 하나라도 참이면 윤년으로 console.log("1")을 수행한다.

더 알아보기

1. 삼항연산자로 풀어볼 수 있다.

console.log((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 1 : 0);

- 삼항연산자를 사용하면 코드가 더 짧아지고 간결해진다.

- 복잡한 조건문이 아닌 단순한 조건문이라면 삼항 연산자를 사용해도 가독성이 좋다.