알고리즘 문제 풀이/백준
[Algorithm] 백준 - 웰컴 키트 (30802) (Kotlin)
참깨빵위에참깨빵_
2024. 9. 19. 15:26
728x90
반응형
말이 긴데 결국 정리하면
- 3번 입력의 첫 번째 수(T)를 통해 티셔츠의 최소 묶음 수를 계산
- 3번 입력의 두 번째 수(P)를 통해 펜의 최대 묶음 수를 계산
2가지를 계산해서 println()을 2번 써서 출력하면 된다. 티셔츠는 남아도 되는데 부족하면 안 되고, 펜은 참가자 수에 맞춰 정확하게 준비해야 하는 것에 주의한다.
fun main() {
val n = readln().toInt() // 총 참가자 수
val sizes = readln().split(" ").map { it.toInt() } // 티셔츠 사이즈별 신청 수
val (T, P) = readln().split(" ").map { it.toInt() } // 티셔츠 묶음, 펜 묶음 크기
var tshirtBundles = 0
for (size in sizes) {
tshirtBundles += ceil(size.toDouble() / T).toInt()
}
println(tshirtBundles)
val penBundles = n / P
val remainingPens = n % P
println("$penBundles $remainingPens")
}
ceil()은 반올림해주는 메서드인데 생소하다면 공식문서의 내용을 참고한다.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.math/ceil.html
주어진 값을 양의 무한대를 향한 정수로 반올림한다
리턴값 = 주어진 값보다 크거나 같은 최소 배수의 정수값이다.
테스트 케이스에서 S~XXL까지는 각각 3, 1, 4, 1, 5명이 신청했고 T(3번 입력의 첫 번째 숫자)는 5다. 최소 묶음 수는 5인데 3, 1, 4, 1, 5명이 신청한 상태고, 티셔츠는 남아도 상관없기 때문에 신청자 수를 T로 나눠서 올림한 다음 더한다.
이 결과로 5를 얻는데 XXXL은 9기 때문에 1묶음만 주문하면 4명이 못 받게 된다. 그래서 2묶음을 주문해야 하기 때문에, 총 티셔츠 최소 묶음 수는 7이 된다.
펜은 총 참가자 수를 펜 묶음 크기(7)로 나눈 몫(=펜 묶음 수), 나머지(=펜 묶음 수 외의 추가 주문량)를 각각 출력하면 된다. 이렇게 하면 펜은 남는 것 없이 모든 참가자에게 한 자루씩 나눠줄 수 있게 된다.
반응형