9733번: 꿀벌백준/문제2024. 6. 28. 15:23
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/9733
언어 : Kotlin
문제 설명 :
꿀벌이 하는 일은 다음과 같이 분류할 수 있다.
휴식(Re), 순찰(Pt), 방청소(Cc), 꽃가루 먹기(Ea), 새끼 돌보기(Tb), 벌집 짓기와 관리(Cm), 외부 활동(Ex)
한 꿀벌이 1시간 동안 한 일이 주어졌을 때, 각각을 몇 번 했고, 비율이 어떻게 되는지 구하는 프로그램을 작성하시오.
입력 :
입력은 꿀벌이 한 일이 공백과 줄바꿈으로 구분되어서 주어진다. 최대 24개의 일을 한다.
출력 :
각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다.
입력의 마지막 줄에는 "Total <total> 1.00"을 출력하며, <total>은 꿀벌이 한 일의 개수이다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
Cc Pt Pt Re Tb Re Cm Cm Re Pt Pt Re Ea Ea Pt Pt Pt Re Re Cb Cb Pt Pt Cb |
Re 6 0.25 Pt 9 0.38 Cc 1 0.04 Ea 2 0.08 Tb 1 0.04 Cm 2 0.08 Ex 0 0.00 Total 24 1.00 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val list = arrayOf("Re", "Pt", "Cc", "Ea", "Tb", "Cm", "Ex")
val map = HashMap<String, Int>()
var total = 0
while (true) {
try {
val st = StringTokenizer(readLine())
while (st.hasMoreTokens()) {
val cur = st.nextToken()
map[cur] = map.getOrDefault(cur, 0) + 1
total++
}
} catch (_: Exception) {
break
}
}
list.forEach {
val cnt = map.getOrDefault(it, 0)
bw.appendLine("$it $cnt ${String.format("%.2f", cnt.toFloat() / total)}")
}
bw.write("Total $total 1.00")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
26040번: 특정 대문자를 소문자로 바꾸기 (0) | 2024.07.01 |
---|---|
23027번: 1번부터 문제의 상태가...? (0) | 2024.07.01 |
26768번: H4x0r (0) | 2024.06.28 |
15786번: Send me the money (0) | 2024.06.28 |
27880번: Gahui and Soongsil University station (0) | 2024.06.27 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!