[백준] N과 M (12) (15666)
문제 설명
입력 및 출력
» 입력
- 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.
» 출력
- 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
3 1 4 4 2 |
2 4 |
4 2 9 7 9 1 |
1 1 1 7 1 9 7 7 7 9 9 9 |
4 4 1 1 2 2 |
1 1 1 1 1 1 1 2 1 1 2 2 1 2 2 2 2 2 2 2 |
문제 풀이(SWIFT) 1
//
// main.swift
// BOJ15666_SWIFT
//
// Created by choiyoujun on 2022/02/23.
//
let NM = readLine()!.split(separator: " ").map { Int($0)! }
let N = NM[0]
let M = NM[1]
let seq = Array(Set(readLine()!.split(separator: " ").map { Int($0)! })).sorted(by: <)
var num = [Bool](repeating: false, count: 10)
func dfs(depth: Int, index: Int ,str: String) {
if depth == M {
print(str)
return
}
for i in index..<seq.count {
dfs(depth: depth + 1, index: i, str: str + "\(seq[i]) ")
}
}
dfs(depth: 0, index: 0, str: "")