일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 모던 자바스크립트 deep dive
- 프로그래머스
- 알고리즘
- 최원영 저자
- nomadcoders
- 자격증
- 비전공자를 위한
- 노개북
- 오블완
- CodeStates
- IT 지식
- SQLD
- 구름edu
- 노마드 코더
- 엘리스코딩
- 공부를 가장한 일기일지도
- 노마드코더
- 자바스크립트
- boj
- 이해할 수 있는
- SQL 개발자
- 티스토리챌린지
- Do it! 시리즈
- K-Digital Credit
- 백준
- js
- 제로베이스
- 개발자북클럽
- javascript
- 톺아보기
- Today
- Total
개발자를 희망하는 초보의 자기개발 이야기
백준 2753번 윤년 문제 - Node.js 본문

문제 원문 링크
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
예제 입력 1
2000
예제 출력 1
1
1999
예제 출력 2
0
풀이1
const fs = require("fs");
const input = fs.readFileSync("dev/stdin").toString().trim();
const a = parseInt(input);
if (a % 4 === 0) {
if (a % 400 === 0 || a % 100 !== 0) {
console.log("1");
} else {
console.log("0");
}
} else {
console.log("0");
}
조건문 문제로 윤년은 연도가 4배수라는 조건이 필수기 때문에 최상단의 조건문으로 뒀다.
그 다음으로 100배수가 아닐 때, 400의 배수일 때를 ||(또는)으로 묶어서 출력처리했다.
const fs = require("fs");
const input = fs.readFileSync("dev/stdin").toString().trim();
const a = parseInt(input);
if (a % 4 === 0) {
if (a % 400 === 0 || a % 100 !== 0) {
console.log("1");
}
} else {
console.log("0");
}
else문을 하나 더 줄여도 되지 않을까 했는데 오답이었다.
생각해 보니 4의 배수이면서 100의 배수이거나 400의 배수가 아닌 경우 아무런 값이 출력되지 않는 문제가 있었다.
윤년이 아니면 0을 출력해야 하기 때문에 요구사항에 맞지 않았다.
풀이2
const fs = require("fs");
const input = fs.readFileSync("dev/stdin").toString().trim();
const a = parseInt(input);
if (a % 4 === 0) {
if (a % 400 === 0 || a % 100 !== 0) {
return console.log("1");
}
}
console.log("0");
혹시 몰라 조건이 맞으면 1을 출력하고 return으로 종료. 그 외에는 기본적으로 0이 출력되도록 테스트를 해봤다.
왜인지 정상적으로 동작했다.(원래 바닐라 자바스크립트에서는 함수 밖에서 return은 동작하지 않는다!)
백준 제출 환경이 Node.js이기 때문인데 Node.js는 모듈 또는 스크립트 파일을 실행할 때 암묵적으로 module.exports가 존재하고, 내부적으로 함수처럼 실행되기 때문에 return이 정상적으로 동작한다고 한다.
'자료구조&알고리즘 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
백준 15552번 빠른 A+B 문제 - Node.js (1) | 2024.10.17 |
---|---|
백준 2884번 알람 시계 문제 - Node.js (1) | 2024.10.16 |
백준 10172번 개 문제 - Node.js (0) | 2024.10.15 |
백준 10171번 고양이 문제 - Node.js (0) | 2024.10.15 |
백준 2588번 곱셈 문제 - Node.js (0) | 2024.10.15 |