티스토리 뷰

PS

[Swift] 백준_N과 M(8)(15657)

희철 2023. 1. 17. 17:49

문제

 

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

 

15657번: N과 M (8)

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

www.acmicpc.net

 

 

풀이

 

이전에 비슷한 문제가 있었다. 다른 점은 숫자가 연속된 숫자가 아니라 반복문의 i를 인덱스로 사용해야한다.

i로 들어온 numbers[i]의 숫자와 그 이후의 숫자들로만 쌍을 이뤄야하기때문에 파라미터로 i를 num으로 받아 num부터 반복문을 돌렸다.

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)
    }
}
dfs("",0,0)

 

 

_____________________________________________________________________________________________________

 

 

뭔가 계속해서 반복되는 느낌이긴하지만 어떤 느낌으로 접근해야하는지 감이 잘 오는 것 같음

'PS' 카테고리의 다른 글

[Swift] 백준_N과 M(10)(15664)  (0) 2023.01.18
[Swift] 백준_N과 M(9)(15663)  (0) 2023.01.18
[Swift] 백준_N과 M(7)(15656)  (0) 2023.01.17
[Swift] 백준_N과 M(6)(15655)  (0) 2023.01.17
[Swift] 백준_N과 M(5)(15654)  (0) 2023.01.17
댓글
최근에 올라온 글
Total
Today
Yesterday