반응형
```
백준 3060번 욕심쟁이 돼지 Kotlin 구현해 보기
```
이번 글을 통해 배워갈 내용
- 백준 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
반응형
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 2470번 두 용액 Kotlin 구현해보기 (0) | 2023.03.15 |
---|---|
백준 3449번 해밍 거리 Kotlin 구현해보기 (0) | 2023.03.14 |
백준 3059번 등장하지 않는 문자의 합 Kotlin 구현해보기 (0) | 2023.03.13 |
백준 20920번 영단어 암기는 괴로워 Kotlin 구현해보기 (0) | 2023.03.12 |
백준 7795번 먹을 것인가 먹힐 것인가 Kotlin 구현해보기 (0) | 2023.03.11 |