프로그래머스 코딩테스트 문제 중
level 2 - 소수찾기를 풀면서
모든 수 조합 만들기를 계속 하다가
다음과 같은 방법을 찾았다
let numberList = ["1", "2", "3"]
var 모든수조합리스트 = [String]()
func 모든수조합만들기(numberList: [String], currentNumber: String) {
if currentNumber != "" {
모든수조합리스트.append(currentNumber)
}
for i in 0..<numberList.count {
var newNumberList = numberList
let newCurrentNumber = newNumberList.remove(at: i)
모든수조합만들기(numberList: newNumberList, currentNumber: currentNumber + newCurrentNumber)
}
}
모든수조합만들기(numberList: numberList, currentNumber: "")
print(Set(모든수조합리스트))
/*
["13", "21", "321", "132", "23", "231", "213", "31", "2", "32", "312", "1", "12", "123", "3"]
*/
함수 안의 상황을 그림으로 보면
다음과 같은데
위 사진을 한번 더 반복하면 된다