1. 문제 설명
숫자 짝꿍
2. 문제 분석
- 풀이는 간단하다. 두 수에 공통적으로 기록된 정수 중 최솟값을 가져와서 정렬하면 된다.
- 이전에 풀었던 방법은
filter
등 고차 함수로 풀었는데, 시간이 다소 걸리기 때문에 특정 케이스에서 시간 초과가 났다. 결국 Int
나 String
으로 타입 캐스킹을 하지 않고 풀었다.
3. 나의 풀이
import Foundation
func solution(_ X:String, _ Y:String) -> String {
var leftDict = [Character: Int]()
var rightDict = [Character: Int]()
for number in X {
let count = leftDict[number] ?? 0
leftDict[number] = count + 1
}
for number in Y {
let count = rightDict[number] ?? 0
rightDict[number] = count + 1
}
var answer = ""
for number in "9876543210" {
let minCount = min(leftDict[number] ?? 0, rightDict[number] ?? 0)
for _ in 0..<minCount {
answer.append(number)
}
}
if answer.isEmpty {
return "-1"
} else if answer.first == "0" {
return "0"
} else {
return answer
}
}