본문 바로가기
Algorithm/문제풀이_백준

[Swift][BruteForce] 백준 10974번 (모든 순열)

by Joahnee 2021. 9. 24.

요구능력 : 순열에 대한 이해

 

코드설명 : 

다음순열을 보고오면 바로 이해가 가능하다.

다음순열의 겉에 팩토리얼로 감싸서 계속해서 순열을 바꿔주고 프린트한게 전부이다.

 

후기 : 이전에 풀었던 문제중에 다음 순열이 있는데 그 문제를 풀었던 덕분에 쉽게 풀었다.

다음순열에 팩토리얼을 더한 문제

let n = Int(readLine()!)!
var sum = 1
var arr: [Int] = []
var result: [Int] = []

factorial(n)
for i in 0..<n{
    arr.append(i + 1)
}

for _ in 0..<sum{
    print(arr.map{String($0)}.joined(separator: " "))
    var index = 0
    for i in 0..<n {
        if i + 1 < n, arr[i] < arr[i + 1] {
            index = i
        }
    }
    
    var biggerIndex = 0
    for j in 0..<n {
        if arr[index] < arr[j] {
            biggerIndex = j
        }
    }
    
    
    arr.swapAt(index, biggerIndex)
    arr = arr[0...index] + arr[index+1..<n].sorted()
}


func factorial(_ n: Int) {
    if n == 1{
        return
    }
    sum = n * sum
    factorial(n - 1)
}

댓글