Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/9733

 

9733번: 꿀벌

각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다. 입력의

www.acmicpc.net

 

난이도 : 실버 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 만큼 합니다

 

 

후기

꿀벌들이 열심히 일을 하네요.

숙취에는 꿀물이 좋답니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.