티스토리 뷰

PS

[Swift] 백준_N과 M(6)(15655)

희철 2023. 1. 17. 14:39

문제

 

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

 

15655번: N과 M (6)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net

 

 

풀이

 

이 문제에서는 두번째 줄에 주어진 수를 가지고 input[1]만큼의 수를 가지는 문자열을 만들어서 출력하는 것이다. 이때, 선택된 숫자보다 큰 수로만 짝을 이뤄서 출력해야한다.

 

파라미터로 depth이외에도 시작하는 인덱스를 가지고 있어야한다. 배열을 정렬한 뒤에 해당 인덱스 이후의 숫자들을 체크하면 조건을 만족시킬 수 있기때문이다.

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

 

 

_____________________________________________________________________________________________________

 

'PS' 카테고리의 다른 글

[Swift] 백준_N과 M(8)(15657)  (0) 2023.01.17
[Swift] 백준_N과 M(7)(15656)  (0) 2023.01.17
[Swift] 백준_N과 M(5)(15654)  (0) 2023.01.17
[Swift] 백준_N과 M(4)(15652)  (0) 2023.01.17
[Swift] 백준_N과 M(3)(15651)  (2) 2023.01.17
댓글
최근에 올라온 글
Total
Today
Yesterday