[Swift] 모든 수 조합 만들기

Cobugi·2022년 2월 11일
0
post-thumbnail

프로그래머스 코딩테스트 문제 중
level 2 - 소수찾기를 풀면서
모든 수 조합 만들기를 계속 하다가
다음과 같은 방법을 찾았다

방법

  1. 모든 수 조합들이 들어갈 리스트를 만든다
  2. 모든 수 조합을 만드는 함수를 하나 만든다
  3. 이 함수가 시작할 때, 바로 현재 숫자를 저장할 건데 만약 빈칸이면 저장하지 않는다
  4. for 문을 돌건데, 0번부터 함수의 매개변수로 받아온 리스트의 길이만큼 돌것이다
  5. for 문을 돌면서, 매개변수로 받아온 리스트에서 for문의 인덱스에 맞는 수를 꺼내어 변수에 저장하고 하나가 빠진 리스트도 저장해둔다
  6. 다시 함수를 호출한다(재귀), 이때 매개변수에는 방금 저장해둔 리스트와 (현재 숫자 + 꺼내진 수)를 전달한다
  7. 이제 함수는 다 만들었고, 호출만 하면 된다
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"]

*/

풀이

함수 안의 상황을 그림으로 보면

다음과 같은데
위 사진을 한번 더 반복하면 된다

profile
iOS Developer 🐢

0개의 댓글

관련 채용 정보