문자열을 다루는 문제.
{
,,
,}
등 괄호 및 콤마를 통해 구별 가능한 집합을 배열로 만들어 이차원 배열 속에 저장하고, 원소 개수를 기준으로 오름차순 정렬을 하자. 이후 가장 적은 개수의 집합 내에 들어온 순서대로 리스트에 값을 추가.
import Foundation
func solution(_ s:String) -> [Int] {
var string = Array(s.map{String($0)})
string.removeFirst()
string.removeLast()
// {} 제거
var data = [[Int]]()
let brackets = string.split(separator: "{")
for bracket in brackets {
var element = [Int]()
var number = ""
for digit in bracket {
if Character(digit).isNumber {
number += String(digit)
} else {
if !number.isEmpty {
element.append(Int(number)!)
number = ""
}
}
}
data.append(element)
}
var answer = [Int]()
data.sort(by: {
$0.count < $1.count
})
for element in data {
for num in element {
if !answer.contains(num) {
answer.append(num)
}
}
}
return answer
}
let answer = solution("{{20,111},{111}}")
print(answer)