티스토리 뷰

PS

[Swift] 백준_N과 M(5)(15654)

희철 2023. 1. 17. 14:13

문제

 

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

 

15654번: N과 M (5)

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

www.acmicpc.net

 

 

풀이

 

예제 입출력을 보고 문제의 조건을 찾아내보는게 처음이라 살짝 당황했다.

 

첫 번째 줄에는 숫자의 개수와 출력할 숫자의 개수를 의미하고, 두번째 줄에서는 숫자가 주어진다.

첫번째 예시를 보면 4,5,2라는 수를 1개씩 순서대로 출력하면 된다는 얘기다.

 

이번 문제에서는 배열에서 선택된 숫자를 제외한 모든 수를 돌아야하므로 check라는 변수가 필요했다.

방문했는지 체크해야 해당 숫자가 포함되지 않으므로 주어진대로 출력할 수 있다.

import Foundation

let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let numbers = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted(by: <)

var check = [Bool](repeating: false, count: input[0])
func dfs(_ current: String, _ depth: Int) {
    if depth == input[1] {
        print(current)
        return
    }
    for i in 0..<numbers.count {
        if !check[i] {
            check[i] = true
            dfs(current + "\(numbers[i]) ", depth + 1)
            check[i] = false
        }
    }
}
dfs("",0)

 

 

_____________________________________________________________________________________________________

 

 

얼른 이 시리즈를 끝내고 다른 유형도 풀어봐야 할 것 같다.

'PS' 카테고리의 다른 글

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