코딩테스트/백준
BOJ-10974 모든 순열 Swift
Jenikeju2552
2024. 4. 13. 10:09
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
내가 푼 풀이
- dfs로 1부터 N까지 N개의 원소를 갖는 배열을 뽑는다.
- 1부터 원소를 뽑는다고 하면 dfs로 뽑힌 원소들은 자연스럽게 사전순으로 정렬되어있다.
import Foundation
let N = Int(readLine()!)!
var visited = Array(repeating: false, count: N+1)
func dfs(count: Int, arr: [Int]) {
if count == N {
print(arr.map{String($0)}.joined(separator: " "))
return
}
for i in 1...N {
if !visited[i] {
visited[i] = true
dfs(count: count+1, arr: arr + [i])
visited[i] = false
}
}
}
dfs(count: 0, arr: [])