README

Algorithm

  • ๋ฌธ์ œ ์ œ๋ชฉ์„ ํด๋ฆญํ•˜๋ฉด, GitHub ์ฝ”๋“œ๋กœ, โœ๏ธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ‹ฐ์Šคํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต (๋ฐฑ์ค€, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋“ฑ) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ˆ˜ํ•™

    • ์ˆœ์—ด (nPr)

์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜

์ˆ˜ํ•™

์ˆœ์—ด

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ž„์˜์˜ ์ง‘ํ•ฉ, n๊ฐœ ์ค‘ r๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ•

var v = [1, 2, 3]

func permutation(n: Int, r: Int, depth: Int) {
    if r == depth {
        print( v.map { String($0) }.joined(separator: " "))
        return
    }
    
    for i in depth..<n {
        v.swapAt(i, depth)
        permutation(n: n, r: r, depth: depth + 1)
        v.swapAt(i, depth)
    }
    return
}

permutation(n: 3, r: 3, depth: 0)

์กฐํ•ฉ

  • ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์ž„์˜์˜ ์ง‘ํ•ฉ, n๊ฐœ ์ค‘ r๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ•

  1. ์žฌ๊ท€ํ•จ์ˆ˜ ์ด์šฉ

  1. ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜

  • ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์ด์šฉ

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

์†Œ์ˆ˜ ์ฐพ๊ธฐ

  1. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด(n <= 1,000,000)

  1. ์ œ๊ณฑ๊ทผ ํ™œ์šฉ

๋ˆ„์ ํ•ฉ

  • Swift์˜ ๋‚ด์žฅํ•จ์ˆ˜

์ž๋ฃŒ๊ตฌ์กฐ

Stack

  • Swift์˜ ๋ฐฐ์—ด ์ž์ฒด๋ฅผ Stack์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฒ ์ŠคํŠธ์ธ๋“ฏ! (๊ตณ์ด ๋งŒ๋“ค ํ•„์š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.)

  • ์‚ฝ์ž… ์‚ญ์ œ ๋ชจ๋‘ O(1)

Last updated