문제

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

+ Recent posts