문제
연도가 주어졌을 때, 윤년이면 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
풀이
문제만 잘 읽으면 정말 간단하게 if 문으로 해결할 수 있는 문제입니다. 하지만 저는 바보같이... 여러번 틀렸네요.. 이해력이 부족해서 문제를 해석할 때 한번에 이해가 가는 경우가 별로 없더라구요.. 무튼, 문제를 보면
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
이걸 식으로 바꾸면, 주어진 연도가 4로 나누어 떨어지면서 100으로 나누어 떨어지지 않거나, 혹은 4로 나누어 떨어지면서, 400으로도 나누어 떨어지는 숫자일 경우 1을 출력하고, 그 외의 경우에는 0을 출력하면 됩니다.
const fs = require('fs');
let input = fs.readFileSync(`/dev/stdin`).toString(); // 백준에서 입력 받는 방법
input = Number(input); // 입력을 숫자로 변환
if (input % 4 === 0 && (input % 100 !== 0 || input % 400 === 0)) {
console.log(1);
} else {
console.log(0);
}
알고리즘 풀이 처음 포스트이므로, 간단하게 설명해 보도록 하겠습니다. 백준 온라인 저지에서는 인풋을 입력하지 않고 제공을 받는데, 그 인풋은 위의 fs.readfileSync(`/dev/stdin`).toString() 으로 받습니다. 이 문제에서 인풋은 스트링이 아닌 넘버의 형태여야 하기에 Number(input) 을 사용하여 숫자의 형태로 다시 변환 시켜줍니다.
이직을 준비하다 보니 제가 부족한 부분도 너무 많고, 특히 알고리즘은 언제나 어렵네요 😢. 그럼 다들 열공하시기 바랍니다!
'Studying > Algorithms' 카테고리의 다른 글
[알고리즘 떠먹여 주는 남자] 백준 8393 - 합 for Node.js (0) | 2022.04.04 |
---|---|
[알고리즘 떠먹여 주는 남자] 백준 1157 - 단어 공부 for Node.js (0) | 2022.04.04 |
[알고리즘 떠먹여 주는 남자] 백준 2525 - 오븐 시계 for Node.js (0) | 2022.04.03 |
[알고리즘 떠먹여 주는 남자] 백준 2884 - 알람 시계 for Node.js (0) | 2022.04.02 |
[알고리즘 떠먹여 주는 남자] 백준 14681: 사분면 고르기 for Node.js (0) | 2022.03.13 |