https://www.acmicpc.net/problem/9733
난이도 : 실버 5
태그 : 구현, 자료 구조, 문자열, 해쉬를 사용한 집합과 맵
설명
해쉬맵을 사용하여 각 일을 몇 번 했는지 카운트하여 풀 수 있습니다.
소스코드
import java.util.*
import kotlin.collections.HashMap
fun main() = with(System.`in`.bufferedReader()) {
val target = arrayOf("Re", "Pt", "Cc", "Ea", "Tb", "Cm", "Ex")
val map = HashMap<String, Int>()
var cnt = 0
while (true) {
try {
val st = StringTokenizer(readLine())
while (st.hasMoreTokens()) {
val act = st.nextToken()
map[act] = map.getOrDefault(act, 0) + 1
cnt++
}
} catch (e: Exception) {
break
}
}
val sb = StringBuilder()
for (act in target) {
val num = map.getOrDefault(act, 0)
sb.append("$act $num ${String.format("%.2f", num.toFloat() / cnt)}\n")
}
sb.append("Total $cnt 1.00")
println(sb)
}
HashMap에 없는 키를 사용해 불러오려 하면 에러가 발생되므로,
없는 데이터일 경우 기본값을 지정하기 위해 getOrDefault를 사용합니다.
getOrDefault를 사용해 특정 Key(String)를 사용해 값을 불러오고, 해당 Key의 value를 +1 만큼 합니다
후기
꿀벌들이 열심히 일을 하네요.
숙취에는 꿀물이 좋답니다.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 14425번] [Kotlin] 문자열 집합 (0) | 2022.12.01 |
---|---|
[백준 1269번] [Kotlin] 대칭 차집합 (0) | 2022.12.01 |
[백준 29057번] [Kotlin] Большой удой (0) | 2022.11.27 |
[백준 2566번] [Kotlin] 최댓값 (0) | 2022.11.26 |
[백준 11365번] [Kotlin] !밀비 급일 (0) | 2022.11.26 |