티스토리 뷰
문제
https://www.acmicpc.net/problem/15652
풀이
이 문제에서도 이전 문제와 같이 depth를 이용해 숫자의 개수를 count하여 출력하는 것은 동일하다(파라미터로 문자열을 받기 때문에).
다만, 이번 문제처럼 현재 숫자를 기준으로 이후의 숫자만 받아오기 위해서는 추가적인 파라미터가 필요하다고 생각했다.
그래서 num이라는 파라미터에 반복문의 i를 받아오도록 하였다.
[4,2]의 경우에서 dfs("",0,1)로 시작하면 dfs("1 ",1,1), dfs("2 ",1,2), dfs("3 ",1,3), dfs("4 ",1,4)가 각각 실행될 것이다. 하지만 dfs이므로 하나의 경우에 대해서 깊이를 우선으로 탐색할 것이다. 그래서 각각의 경우에 대해 num부터 input[0]까지 출력하게되면 예시의 답처럼 출력이 된다.
import Foundation
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
func dfs(_ current: String, _ depth: Int, _ num: Int) {
if depth == input[1] {
print(current)
return
}
for i in num...input[0] {
dfs(current + "\(i) ", depth + 1, i)
}
}
dfs("",0,1)
_____________________________________________________________________________________________________
파라미터를 하나 더 받아야한다는 생각이 완전 바로 들지는 않았다. 머리이슈
'PS' 카테고리의 다른 글
[Swift] 백준_N과 M(6)(15655) (0) | 2023.01.17 |
---|---|
[Swift] 백준_N과 M(5)(15654) (0) | 2023.01.17 |
[Swift] 백준_N과 M(3)(15651) (2) | 2023.01.17 |
[Swift] 백준_N과 M(2)(15650) (0) | 2023.01.17 |
[Swift] 백준_N과 M(1)(15649) (0) | 2023.01.16 |
댓글
최근에 올라온 글
- Total
- Today
- Yesterday