{ }codelper
그리고·또는P0019

윤년 판별

연도 y가 주어진다.
다음 규칙(그레고리력)으로 윤년이면 "윤년", 아니면 "평년"을 출력하라.
4로 나누어떨어지면 윤년이다.
단, 100으로 나누어떨어지면 윤년이 아니다.
단, 400으로 나누어떨어지면 다시 윤년이다.
예: 2024년은 윤년, 1900년은 평년, 2000년은 윤년.

입력
정수 y 하나 (1 ≤ y ≤ 10000)
출력
"윤년" 또는 "평년"
예시 1 · stdin
2000
stdout
윤년
예시 2 · stdin
1900
stdout
평년
main.py
입력(stdin)

실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).

$ 준비됐어요

코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.

다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이

100과 400 규칙을 빠뜨리는 실수가 가장 흔해요.
y % 4 == 0만 보면 1900년이 윤년이 되고, 100 규칙만 넣으면 2000년이 평년이 돼요.
한 줄로 쓰면 (y % 4 == 0 && y % 100 != 0) || y % 400 == 0이에요.
'그리고·또는'의 철자가 언어마다 달라요: Python은 and·or·not, 나머지 7개 언어(크레이콘 포함)는 &&·||·!.
어느 언어든 &&가 ||보다 먼저 묶이지만, 괄호를 쳐 두면 읽는 사람이 헷갈리지 않아요.
크레이콘은 만약 (…) { } 아니면 { }.

Pythonmain.py · 5 줄
y = int(input())if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:    print("윤년")else:    print("평년")
JavaScriptmain.js · 3 줄
const y = Number(require("fs").readFileSync(0, "utf8").trim());const leap = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;console.log(leap ? "윤년" : "평년");
TypeScriptmain.ts · 4 줄
import { readFileSync } from "node:fs";const y: number = Number(readFileSync(0, "utf8").trim());const leap: boolean = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;console.log(leap ? "윤년" : "평년");
JavaMain.java · 9 줄
import java.util.Scanner; public class Main {    public static void main(String[] args) {        int y = new Scanner(System.in).nextInt();        boolean leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;        System.out.println(leap ? "윤년" : "평년");    }}
C#Main.cs · 11 줄
using System; class Program{    static void Main()    {        int y = int.Parse(Console.ReadLine());        bool leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;        Console.WriteLine(leap ? "윤년" : "평년");    }}
C++main.cpp · 8 줄
#include <iostream> int main() {    int y;    std::cin >> y;    bool leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;    std::cout << (leap ? "윤년" : "평년") << "\n";}
Cmain.c · 9 줄
#include <stdio.h> int main(void) {    int y;    scanf("%d", &y);    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) puts("윤년");    else puts("평년");    return 0;}
Craykonmain.cray · 9 줄
y = 콘솔.줄읽기().수로변환();만약 (y % 4 == 0 && y % 100 != 0 || y % 400 == 0){    콘솔.쓰기("윤년");}아니면{    콘솔.쓰기("평년");}