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()
}
}
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 - 연속 펄스 부분 수열의 합 (3) | 2024.08.28 |
---|---|
프로그래머스 - 모음사전 (0) | 2024.08.28 |
프로그래머스 - 피로도 (0) | 2024.08.27 |
프로그래머스 - 할인 행사 (0) | 2024.08.27 |
프로그래머스 - 혼자 놀기의 달인 (0) | 2024.08.26 |
프로그래머스 - 연속 부분 수열 합의 개수 (0) | 2024.08.26 |
프로그래머스 - 택배상자 (0) | 2024.08.25 |
프로그래머스 - 삼총사 (0) | 2024.08.25 |