알고리즘

프로그래머스 - 숫자 짝꿍

최데브 2024. 8. 27. 01:34

https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

 

코드가 그리 깔끔하진 않지만 스스로 생각했을때 아이디어는 나쁘지 않았다고 생각한다 ㅎㅎ

각 문자열의 숫자들을 카운트할 Hashmap 을 만들어서 숫자들을 세어주고

같은 키를 확인할때 더 적은 숫자를 가진쪽이 공유되는 숫자라고 판단할 수 있다고 생각했다.

그리고 minCount 만큼 해당 key 를 문자열에 더해주면 숫자 짝꿍 숫자가 만들어지고

이 문자열을 정렬해주면 가장 큰 수가 만들어진다!

class Solution {
    fun solution(X: String, Y: String): String {
        var items = HashMap<Char, Int>()
        var items2 = HashMap<Char, Int>()
        var answer = StringBuilder()
        
        for(i in 0 until X.length){
           items.put(X[i], items.getOrDefault(X[i],0)+1) 
        }
        for(i in 0 until Y.length){
           items2.put(Y[i], items2.getOrDefault(Y[i],0)+1) 
        }
             
        for ((key, value) in items) {
            if (items2.containsKey(key)) {
                val minCount = minOf(value, items2[key]!!)
                repeat(minCount) {
                    answer.append(key)
                }
            }
        }
          if (answer.isEmpty()) return "-1"
        if(answer.toString().all { it == '0' }) return "0"
      

       return answer.toString().toCharArray().sortedDescending().joinToString("").toString()
    }
}
반응형