https://school.programmers.co.kr/learn/courses/30/lessons/17677
import Foundation
func solution(_ str1:String, _ str2:String) -> Int {
// String을 Array로 바꾸는 작업
let array1 = Array(str1)
let array2 = Array(str2)
// 2개씩 끊어서 저장할 Array
var newArray1 = [String]()
var newArray2 = [String]()
for i in 0..<str1.count - 1{
// 문자가 아닐시 저장x
if array1[i].isLetter && array1[i+1].isLetter {
newArray1.append("\(array1[i].uppercased())\(array1[i+1].uppercased())")
}
}
for i in 0..<str2.count - 1{
// 문자가 아닐시 저장x
if array2[i].isLetter && array2[i+1].isLetter {
newArray2.append("\(array2[i].uppercased())\(array2[i+1].uppercased())")
}
}
// Array 두개를 합쳐서 교집합을 빼면 합집합
var sumArray = newArray1 + newArray2
// 교집합의 수
var intersectionCount = 0
// indices는 안전하게 배열을 조회할 수 있게 도와준다
// 범위를 벗어나지 않도록
for i in newArray1.indices {
for j in newArray2.indices {
if newArray1[i] == newArray2[j] {
intersectionCount += 1
newArray2.remove(at: j)
break
}
}
}
// 합집합의 수
var unionCount = sumArray.count - intersectionCount
// 두 집합이 공집할일때
if sumArray.count == 0{
return 65536
}
// 교집합이 없을때
else if intersectionCount == 0{
return 0
}
else{
return Int(Double(intersectionCount)/Double(unionCount) * 65536)
}
}