문제
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: [])
'코딩테스트 > 백준' 카테고리의 다른 글
BOJ-14503 로봇 청소기 Swift (0) | 2024.04.13 |
---|---|
BOJ-1011 Fly me to the Alpha Centauri Swift (0) | 2024.04.13 |
BOJ-15683 감시 Swift (1) | 2024.04.12 |
BOJ-10819 차이를 최대로 Swift (0) | 2024.04.12 |
BOJ-12100 2048(Easy) Swift (0) | 2024.04.12 |