티스토리 뷰

PS

[Swift] 백준_N과 M(11)(15665)

희철 2023. 1. 18. 15:54

문제

 

https://www.acmicpc.net/problem/15665

 

15665번: N과 M (11)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

 

풀이

 

이 문제에서는 9번에서 했던 것처럼 중복만 체크하면서 모든 쌍을 출력해주면된다. 그래서 10번처럼 idx같은 파라미터를 받을 필요도 없이 매번 반복문을 0부터 시작하면 된다.

 

자기자신과의 쌍을 이룰 수 있으므로 방문했던 것을 표시할 필요도 없다.

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) {
    var last = 0
    if depth == input[1] {
        print(current)
        return
    }
    for i in 0..<input[0] {
        if last != numbers[i] {
            dfs(current + "\(numbers[i]) ", depth + 1)
            last = numbers[i]
        }
    }
}
dfs("",0)

 

 

_____________________________________________________________________________________________________

 

 

얼른 이 시리즈 끝내고 다른 대표문제들도 풀어봐야겠다

'PS' 카테고리의 다른 글

[Swift] 백준_N-Queen(9663)  (0) 2023.01.20
[Swift] 백준_N과 M(12)(15666)  (0) 2023.01.18
[Swift] 백준_N과 M(10)(15664)  (0) 2023.01.18
[Swift] 백준_N과 M(9)(15663)  (0) 2023.01.18
[Swift] 백준_N과 M(8)(15657)  (0) 2023.01.17
댓글
최근에 올라온 글
Total
Today
Yesterday