Kotlin/Kotlin 알고리즘

백준 3060번 욕심쟁이 돼지 Kotlin 구현해보기

kimc 2023. 3. 13. 23:27

```

백준 3060번 욕심쟁이 돼지 Kotlin 구현해 보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1.  백준 3060번 욕심쟁이 돼지 풀이

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

 

3060번: 욕심쟁이 돼지

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 두 줄로 구성되어 있고, 첫째 줄에는 하루에 배달되는 사

www.acmicpc.net

백준 3060번 욕심쟁이 돼지는

난이도 브론즈 등급의 문제로서

 

 6마리의 돼지가 정육면체에 그려진 원형태로 있고

매일 사료를 D 단위만큼 줄 때

각 돼지가 첫날 먹는 사료단위가 주어지고

다음날 각 돼지의 좌우 맞은편 의 합만큼 추가로 각 돼지가 더 먹는다고 하면

돼지의 욕심을 더 이상 충족시킬 수 없는 날을 구해주면 됩니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


 

각 돼지의 추가 사료는 

전체 돼지의 추가 사료를 생각해 보면

매일 4배입니다.

따라서

사료의 합에 4의 배수를 곱해서 찾아주면 됩니다.

 

fun main() {
    val inputDto = getInput()
    print(solution(inputDto))
}

fun getInput(): InputDto {
    val testCaseCount = readln().toInt()
    val farms = emptyList<Farm>().toMutableList()
    for (i in 1..testCaseCount) {
        val dailyFeed = readln().toInt()
        val pigFeeds = readln().split(" ").map { m -> m.toInt() }
        farms.add(Farm(dailyFeed, pigFeeds))
    }
    return InputDto(farms)
}

data class InputDto(
    val farms: List<Farm>
)

data class Farm(
    val dailyFeed: Int,
    val pigFeeds: List<Int>
)

fun solution(dto: InputDto): String {
    return dto.farms.map { farm -> findDoomsDay(farm) }.joinToString("\n")
}

fun findDoomsDay(farm: Farm): Int {
    var day = 1
    var sum = farm.pigFeeds.sum()

    while (sum <= farm.dailyFeed) {
        day++
        sum *= 4
    }

    return day
}

// https://codemasterkimc.tistory.com/

 

테스트

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class MainKtTest {

    @Test
    fun test() {
        assertEquals(
            "2\n1",
            solution(
                InputDto(
                    listOf(
                        Farm(21, listOf(1, 2, 3, 4, 5, 6)),
                        Farm(21, listOf(1, 2, 3, 4, 5, 7))
                    )
                )
            )
        )
    }
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90