Menu
Coddy logo textTech

복습 - 도서관 카드

Coddy Kotlin 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 6번째.

challenge icon

챌린지

중급

클래스 LibraryCard(val name: String, val limit: Int = 3)을 선언하세요. 해당 init 블록은 비어 있지 않은 이름(name is empty)과 최소 1인 제한값(limit must be positive)을 요구합니다. 이 클래스는 대여한 제목 목록을 유지합니다. borrow(title)은 카드가 한도에 도달했거나 해당 제목을 이미 보유하고 있지 않은 경우 true를 반환하고 제목을 추가합니다. giveBack(title)은 제목을 제거했을 때 true를 반환합니다. status()는 대여 순서대로 Ada: 2/3 (Dune, Emma)을 반환하며, 대여한 항목이 없으면 Ada: 0/3을 반환합니다.

제공된 코드는 이름과 제한값(또는 기본값을 사용하기 위한 빈 줄)을 읽은 다음 +title 또는 -title 명령을 읽습니다. 각 명령에 대해 ok 또는 no를 출력하고 마지막으로 status()를 출력합니다. 잘못된 카드인 경우 대신 오류 메시지를 출력합니다.

코드는 LibraryCard.kt에 작성하세요. Main.kt에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

fun main() {
    // 제공된 입력/출력 코드: 그대로 유지하세요
    val input = generateSequence(::readLine).toList()
    try {
        val card = if (input[1].isEmpty()) LibraryCard(input[0]) else LibraryCard(input[0], input[1].toInt())
        for (cmd in input.drop(2)) {
            val title = cmd.drop(1)
            val done = if (cmd.startsWith("+")) card.borrow(title) else card.giveBack(title)
            println(if (done) "ok" else "no")
        }
        println(card.status())
    } catch (e: IllegalArgumentException) {
        println(e.message)
    }
}

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Kotlin 플레이그라운드