문제: https://programmers.co.kr/learn/courses/30/lessons/17677
1. 대소문자 똑같댔으니 소문자로 전부 바꿔주기
2. 특수기호 유무 판별
3. 교집합 합집합 계산
4. J(0, 0) 예외처리
import Foundation
func solution(_ str1:String, _ str2:String) -> Int {
let str1 = Array(str1.lowercased())
let str2 = Array(str2.lowercased())
let letters = "abcdefghijklmnopqrstuvwxyz"
var A = [String]()
var B = [String]()
for i in 0..<str1.count - 1 {
if letters.contains(str1[i]) && letters.contains(str1[i + 1]) {
let str = String(str1[i...i + 1])
A.append(str)
}
}
for i in 0..<str2.count - 1 {
if letters.contains(str2[i]) && letters.contains(str2[i + 1]) {
let str = String(str2[i...i + 1])
B.append(str)
}
}
var intersect = 0
var union = 0
let s = Set(A + B)
for str in s {
let aCount = A.filter { $0 == str }.count
let bCount = B.filter { $0 == str }.count
intersect += min(aCount, bCount)
union += max(aCount, bCount)
}
if intersect == 0 && union == 0 {
return 1 * 65536
}
return Int(Double(intersect) / Double(union) * 65536)
}
solution("FRANCE", "french") // 16384
solution("handshake", "shake hands") // 65536
solution("aa1+aa2", "AAAA12") // 43690
solution("E=M*C^2", "e=m*c^2") // 65536
'알고리즘' 카테고리의 다른 글
[Swift] 프로그래머스 - 카카오 수식 최대화 (0) | 2022.02.11 |
---|---|
[Swift] 프로그래머스 - 카카오 거리두기 확인하기 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 짝지어 제거하기 (0) | 2022.02.10 |
[Swift] 프로그래머스 - 카카오 크레인 인형뽑기 게임 (0) | 2022.02.10 |
[Swift] 프로그래머스 - 카카오 오픈채팅방 (0) | 2022.02.10 |
댓글