Algorithm/문제풀이_백준
[Swift][DFS] 백준 15652번 (N과M(4))
Joahnee
2021. 9. 27. 22:49
요구능력 : DFS와 백트래킹에 대한 이해
코드설명 :
N과M(3) 에서 "비내림차순" 이라는 조건이 더해졌다.
비내림차순은 앞에수가 뒤에수보다 작으면 안된다.
예를들면,
1 2 2는 되는데, 1 2 1은 안된다.
어차피 출력만 제대로하면 되는거니, 출력을 만드는 부분(결과가 도출되는 부분)에서 조건을 줘서 조건에 맞지않으면 출력을 못하게 만들었다.
후기 : N과M(3) 문제에 간단한 조건1개만 추가한 문제
처음에 dfs도는 쪽에 넣었다가.. 도저히 아닌거같아서, 결과쪽에 넣으니 해결
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
let n = arr[0]
let m = arr[1]
var result: [Int] = []
var depth = 0
var str = ""
func dfs(_ depth: Int){
var isStr: Bool = true
if depth == m {
for i in 0..<m {
if i > 0, result[i] < result[i - 1]{
isStr = false
}
}
if isStr {
str += "\(result.map{String($0)}.joined(separator: " "))"
str += "\n"
}
return
}
for i in 1...n{
result.append(i)
dfs(depth + 1)
result.removeLast()
}
}
dfs(depth)
print(str)