Algorithm_javascript/2. 조건문

백준 2753번 윤년 (javascript,node.js)

luminouswy 2023. 5. 10. 17:13
반응형

문제

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

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

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

입력

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

출력

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

예제입력 1

2000

예제출력 1

1

예제입력 2

1999

예제출력 2

0

문제풀이

  • 윤년이 언제인지 알아야 하는문제
  • 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
  • 그래서 조건문에 먼저 4의 배수이면서 100의 배수가 아닐때의 조건식과 또는 400의 배수일때의 숫자를 찾아서 마으면 1 아니면 0을 출력
  • 참고로 윤년을 어떻게 찾아야 할지 몰라서 다른 사람의 코드를 찾아봤음
// 백준 2753번
// 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
// 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
// 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다.
// 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

//입력값
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split(" ");

const a = Number(input[0]);

// 100의 배수인지 알기위해 변수 b를 두고 아래 if 문에서 b가 0이되는지 확인
const b = a % 100;

// 400의 배수인지 확인하기 위해 a를 400으로 나눈 나머지가 0인 것을 확인하기 위한 변수
const c = a % 400;

// a%4 === 0 && b !== 0 는 4의 배수이면서 100의 배수가 아닐때
// 또는 c === 0 이면 400의 배수일때
if ((a % 4 === 0 && b !== 0) || c === 0) {
  console.log("1");
} else {
  console.log("0");
}