요구능력 : 순열에 대한 이해
코드설명 :
다음순열을 보고오면 바로 이해가 가능하다.
다음순열의 겉에 팩토리얼로 감싸서 계속해서 순열을 바꿔주고 프린트한게 전부이다.
후기 : 이전에 풀었던 문제중에 다음 순열이 있는데 그 문제를 풀었던 덕분에 쉽게 풀었다.
다음순열에 팩토리얼을 더한 문제
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)
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][DFS] 백준 13023번 (ABCDE) (0) | 2021.09.25 |
---|---|
[Swift][DFS][BackTracking] 백준 15650번 (N과 M(2)) (0) | 2021.09.25 |
[Swift][DFS][백트래킹] 백준 15649번 (N과 M (1)) (0) | 2021.09.23 |
[Swift][DP] 백준 11053번 (가장 긴 증가하는 부분수열) (0) | 2021.09.22 |
[Swift][문자열] 백준 10973번 (이전순열) (0) | 2021.09.16 |
댓글