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()
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘]백준 10819(차이를 최대로) 브루스트포스 (0) | 2023.04.05 |
---|---|
[Swift 알고리즘] 백준 10972(다음순열) (0) | 2023.04.04 |
[Swift 알고리즘] 백준 2156_ 포도주 시식 (0) | 2023.04.02 |
[Swift_알고리즘] 백준 14002_가장 긴 증가하는 부분 수열4 (0) | 2023.03.30 |
[Swift_알고리즘] 백준 11053_가장 긴 증가하는 부분 수열 (0) | 2023.03.29 |