티스토리 뷰
문제
https://www.acmicpc.net/problem/15666
풀이
역시나 9번만 해결했다면 쉽게 해결할 수 있는 문제였다.
예시를 보면 자기자신부터 이후의 숫자들과의 쌍을 출력해야한다. 마찬가지로 중복은 없어야한다.
따라서 자기자신의 인덱스를 알아야 그 이후를 알 수 있기때문에 idx라는 파라미터를 같이 받아준 뒤, 반복문을 idx부터 시작하도록 하면된다.
이전에는 자신이 포함되면 안되므로 dfs(current + "\(numbers[i]) ", depth + 1, i + 1)로 dfs를 호출했지만, idx가 자신도 포함시켜야하므로 idx파라미터에 i + 1이 아닌 i를 넣어준다.
import Foundation
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let numbers = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: <)
func dfs(_ current: String, _ depth: Int, _ idx: Int) {
var last = 0
if depth == input[1] {
print(current)
return
}
for i in idx..<input[0] {
if last != numbers[i] {
dfs(current + "\(numbers[i]) ", depth + 1, i)
last = numbers[i]
}
}
}
dfs("",0,0)
_____________________________________________________________________________________________________
N과 M시리즈를 다풀었따. 기본적인 느낌은 알 것 같은데 다른 문제들도 풀어봐야 할 것 같다.
'PS' 카테고리의 다른 글
[Swift] 백준_스타트와 링크(14889) (0) | 2023.01.20 |
---|---|
[Swift] 백준_N-Queen(9663) (0) | 2023.01.20 |
[Swift] 백준_N과 M(11)(15665) (0) | 2023.01.18 |
[Swift] 백준_N과 M(10)(15664) (0) | 2023.01.18 |
[Swift] 백준_N과 M(9)(15663) (0) | 2023.01.18 |
댓글
최근에 올라온 글
- Total
- Today
- Yesterday