알고리즘/백준

[백준] 2753번: 윤년 - 코틀린(Kotlin)

Junuuu 2022. 10. 31. 00:01
반응형

https://www.acmicpc.net/problem/2753

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

 

문제 해석

문제에 나온 절차대로 윤년을 판별하면 되는 문제입니다.

- 4의 배수이면서 100의 배수가 아니여야 함

- 400의 배수이면 됨

 

막상 구현할 때는 400의 배수는 4의 배수이면서 100의 배수이기 때문에 400의 배수를 먼저 판별해야 했던 문제였습니다.

 

코드

fun main() {
    val input = readLine()!!.toInt()
    println(isLeapYear(input))
}

fun isLeapYear(year: Int) = when {
    (year % 400) == 0 -> LEAP_YEAR

    (year % 4) == 0 &&
    (year % 100) != 0 -> LEAP_YEAR

    else -> YEAR
}

const val LEAP_YEAR = 1
const val YEAR = 0

 

다른 분들의 코드에서 배운 점

fun main() {
    val input = readLine()!!.toInt()
    println(isLeapYear(input))
}

fun isLeapYear(year: Int) = when {
    (year % 400) == 0 -> LEAP_YEAR
    (year % 100) != 0 -> YEAR
    (year % 4) == 0 -> LEAP_YEAR
    else -> YEAR
}

const val LEAP_YEAR = 1
const val YEAR = 0

이런 방식으로 쪼개서 구현하여 가독성을 높이는 방법도 있습니다.