728x90
반응형
programmers.co.kr/learn/courses/30/lessons/64065
안녕하세요 후르륵짭짭 입니다.
이번에 다룰 문제는 카카오 문제인 튜플 입니다.
저는 처음에 이 문제가 시간초과가 발생 할 줄 알고 걱정 했는데,
제출 하니 발생 하지 않아서 다행입니다.
** 문제 해결 방법 **
처음에는 문제가 이해가 안됐는데,,,, 튜플이 하나 일 때는, 맨 앞에 것이 주어지고
두개 일 때는, 튜플에 순서로 두개의 항목이 주어집니다.
따라서 이것을 보아 정렬해서 딕셔너리로 해결하면 풀 수 있겠구나 싶었습니다.
// 0 : 47
func solution(_ s:String) -> [Int] {
let newS = s.components(separatedBy: "},").map { (element) -> String in
return element.filter { (char) -> Bool in
return char == "{" || char == "}" ? false : true
}
}.sorted { (ele1, ele2) -> Bool in
return ele1.count < ele2.count
}
var dict : [Int : Int] = [:]
var answer : [Int] = []
for element in newS{
let singleElement = element.components(separatedBy: ",").map { (element) -> Int in
return Int(element)!
}
for single in singleElement {
if dict[single] == nil {
answer.append(single)
dict[single] = single
}
}
}
return answer
}
처음에 모든 문자열을 "}," 을 기준으로 나눠줘서 배열을 만들어 주고 각 배열에 "}" 과 "{" 을 제거 해줍니다.
그러면 이제 튜플만 남게 됩니다.
그리고 이제 각 배열의 원소 요소를 "," 을 기준으로 나눠주고 Int 형으로 만든 뒤에
딕셔너리로 존재 여부를 판단 했습니다.
** 다른 사람의 코드 **
nobleidea님의 코드입니다.
func solution2(_ s:String) -> [Int] {
var result: [Int] = []
var sets = s.split(omittingEmptySubsequences: true, whereSeparator: { "}".contains($0) }).map {
$0.split(omittingEmptySubsequences: true, whereSeparator: { "{,".contains($0) }).map { Int($0)! }
}
sets.sort { (lhs, rhs) -> Bool in
lhs.count < rhs.count
}
sets.forEach {
result.append(Array(Set($0).subtracting(result)).first!)
}
return result
}
이 분의 코드를 보면 현재 비교할 요소를 Set으로 만들어주고 거기서 차집합을 했습니다.
developer.apple.com/documentation/swift/set/1783322-subtracting
Set 클래스의 메소드인 subtracting 차집합을 하게 되면
A.subtracting(B)를 하면 A에서 B와 동일한 요소를 제거 하고 남은 것들을 제공 해줍니다.
그래서 결국 정렬을 해줬기 때문에 한가지 요소만 남고 그 요소를 result 배열에 담아 줬습니다.
728x90
반응형
'Xcode > Swift - Algorithm' 카테고리의 다른 글
Swift ) HyunDaiCard - Quiz2 (Dictionary) (0) | 2020.09.03 |
---|---|
Swift ) 프로그래머스(Lv2) - 땅따먹기 (DP) (0) | 2020.09.03 |
Swift) 프로그래머스(Lv2) - 타겟 넘버 (BFS 와 Remove(:at)에 대한 고찰) (0) | 2020.09.02 |
Swift ) LeetCode(Easy) - Walking Robot Simulation (Hash) (0) | 2020.09.01 |
Swift) 프로그래머스(Lv2) - 괄호 변환 (Stack & Recursion) (0) | 2020.08.31 |
댓글