알고리즘
[Swift 알고리즘] 백준 6603_로또
마라민초닭발로제
2023. 4. 3. 22:49
https://www.acmicpc.net/problem/6603
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
해결 방법
DFS
재귀 형식으로 Visited노드를 통헤서 접근. recur이란 함수를 돌 때 Visited 노드의 개수가 6일때 print함수를 통해서 출력.
func sol3() {
var visitedArr:[Int] = []
func recurc(_ funcArr:[Int]) {
if visitedArr.count == 6 {
print(visitedArr.map{String($0)}.joined(separator: " "))
_ = visitedArr.popLast()
return
}
var tempArr = funcArr
for _ in tempArr {
let node = tempArr.removeFirst()
visitedArr.append(node)
recurc(tempArr)
}
_ = visitedArr.popLast()
}
while true {
var inputArr = readLine()!.split(separator: " ").map{Int($0)!}
let k:Int = inputArr.removeFirst()
if k == 0 { return }
recurc(inputArr)
print("")
}
}
sol3()