Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기 N
    • 부스트캠프
    • iOS N
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 티스토리챌린지
  • 백준
  • guard
  • Animation
  • ios
  • Git
  • AVAudioSession
  • Swift5.7
  • Optional
  • 소프트웨어 테스트
  • boj
  • Concurrency
  • alamofire
  • 소프트웨어 공학
  • jekyll
  • AutoLayout
  • ImageResource
  • image
  • 부스트캠프
  • 오블완
  • CS
  • 모듈화
  • Python
  • 알고리즘
  • MVC
  • SwiftUI
  • constraint
  • swift
  • 소프트웨어공학
  • if let

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[백준] BOJ-15649 N과 M (1)
카테고리 없음

[백준] BOJ-15649 N과 M (1)

2022. 11. 29. 22:54

문제

이미지를 클릭하면 문제 페이지로 연결됩니다.

N과 M을 입력받아 nPm 의 순열을 구하는 문제였다.

풀이

import Foundation

let nm = readLine()!.split(separator: " ").map { Int($0)! }
let n = nm.first!
let m = nm.last!
let nums = Array(1...n) // [1, 2, ..., n]
/// nPr
func permutation(n elements: [Int], r: Int) -> [[Int]] {
    var result = [[Int]]()
    var visited = [Bool](repeating: false, count: n)
    
    func permu(_ temp: [Int]) {
        if temp.count == r {
            result.append(temp)
            return
        }
        
        for i in 0..<elements.count {
            if !visited[i] { // 중복 없도록 방문한 요소는 건너뛰기
                visited[i] = true
                permu(temp + [elements[i]])
                visited[i] = false
            }
        }
    }
    
    permu([])
    return result
}

let result = permutation(n: nums, r: m)
result.forEach {
    $0.forEach { print($0, terminator: " ") }
    print("")
}

재귀를 이용해 permutation 을 구현하여 풀긴했는데 남한테 설명하는게 너무 어렵다ㅜㅜ 재귀 복잡해

저작자표시 (새창열림)
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바