반응형
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수라서 윤년이지만, 1900년은 4의 배수이지만, 100의 배수이기 때문에 윤년이 아니다.
하지만, 2000년은 400의 배수이기 때문에 윤년이다.
입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
정답 코드(javascript)
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = 0;
rl.on('line', function (line) {
input = Number(line);
}).on('close', function () {
if(input % 400 == 0 || (input % 4 == 0 && input % 100 != 0))
console.log('1');
else
console.log('0');
process.exit();
});
코딩을 공부하다 보면 예제에서 한 번쯤은 꼭 만나게 되는 윤년 게산 문제이다.
문제에서 핵심 문장은 "4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수" 부분이다.
입력된 연도가 4의 배수인 동시에 100의 배수가 아닐 때를 만족해야 하지만 400의 배수일 경우에는 그에 상관없이 윤년을 판정받는다.
이를 if문으로 풀어내면
if(input % 400 == 0)
onsole.log('1');
else if(input % 4 == 0 && input % 100 != 0)
console.log('1');
else
console.log('0');
위의 코드가 나오고 정답으로 채점되지만 || 연산을 통하여 else if절을 위의 if절과 통합시킬 수 있다.
( '&&'는 and, '||'는 or )
if(input % 400 == 0 || (input % 4 == 0 && input % 100 != 0))
console.log('1');
else
console.log('0');
|| 연산을 쓴 코드.
어느 쪽을 선택할 지는 개인에 따라 가독성이 더 좋아 보이는 쪽으로 고르면 OK.
문제 출처 - https://www.acmicpc.net/problem/2753
반응형
'알고리즘 > javascript' 카테고리의 다른 글
백준코드 알고리즘 2884번 '알람 시계' Node.js 풀이 (0) | 2020.01.05 |
---|---|
백준코드 알고리즘 2588번 곱셈 Node.js 풀이 (0) | 2020.01.03 |
javascript 백준코드 알고리즘 1001번 문제 A-B (0) | 2020.01.02 |
javascript 백준코드 알고리즘 10171번 '고양이 출력' 문제 (0) | 2020.01.02 |