안녕하세요. 오늘은 프로그래머스 2레벨 튜플 문제를 풀어보겠습니다!
이 문제는 튜플을 표현하는 집합이 주어지면 튜플을 만들어내면 되는 문제입니다!
그러기 위해서 처음에는 튜플을 표현하는 집합을 배열로 옮겨줍니다!
seperatedBy와 components 메소드를 사용하면 쉽게 배열로 옮기실 수 있습니다.
그 후 집합중 집합의 사이즈가 1부터 N까지 있는데 거기에서 이전 집합을 차집합해주면 n번째 튜플인자가 나옵니다.
과정에서 for문이 지나치게 겹치기 때문에 차집합은 메소드로 구현하였습니다.
참고로 중복이 허용되기 때문에 차집합 과정에서 Set를 사용하지 못하였습니다!
import Foundation
func difference(_ integerArray1:[Int], _ integerArray2:[Int]) -> Int {
var integerArray2 = integerArray2
for i in integerArray1 {
for j in 0..<integerArray2.count {
if integerArray2[j] == i {
integerArray2.remove(at: j)
break
}
}
}
return integerArray2[0]
}
func solution(_ s:String) -> [Int] {
var answer:[Int] = []
let startIndex = s.index(s.startIndex, offsetBy: 2)
let endIndex = s.index(s.endIndex, offsetBy: -2)
let string = s[startIndex..<endIndex]
let stringArray = string.components(separatedBy: "},{")
var integerArray:[[Int]] = [[Int]]()
var count = 0
for s in stringArray {
integerArray.append([])
let currentIntegerArray = s.components(separatedBy: ",")
integerArray[count] = currentIntegerArray.map({(stringElement :String)->Int in
return Int(stringElement)!
})
count += 1
}
for i in 0..<integerArray.count {
for array in integerArray {
if array.count == i + 1 {
answer.append(difference(answer, array))
break
}
}
}
return answer
}
오늘은 여기까지이며, 질문이 있으시면 댓글로 남겨주세요!
좋은 하루 되세요!
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 스택/큐 프린터 with Swift (0) | 2022.01.05 |
---|---|
[프로그래머스] 월간 코드 챌린지 시즌3 빛의 경로 사이클 with Swift (0) | 2022.01.04 |
[프로그래머스] 2020 카카오 인턴십 수식 최대화 with Swift (0) | 2022.01.02 |
[프로그래머스] 2021 카카오 채용연계형 인턴십 거리두기 확인하기 with Swift (0) | 2021.12.31 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 with Swift (0) | 2021.12.31 |