“”
백준 3060 탐욕스러운 돼지 코틀린 구현
“”
이 기사에서 배우는 내용
- 백준 3060번 욕심 돼지잔디
https://www.acmicpc.net/problem/3060
백준 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./
테스트
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))
)
)
)
)
}
}
읽어 주셔서 감사합니다.
뭔가 얻을 수 있기를 바랍니다.
오늘도 재미있는 코딩을 해주세요 ~ 🙂