Swift Data Structure And Algorithm/Sort Algorithm 6

๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort)

1. ๋ฌธ์ œ ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๋ฒ„๋ธ”์ •๋ ฌ์„ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ๋ฒ„๋ธ”์ •๋ ฌ์€ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ์ •๋ ฌ์„ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์„ ํƒ์ •๋ ฌ ๋ฐ ์‚ฝ์ž…์ •๋ ฌ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์˜ค๋ฅธ์ชฝ ๋ถ€ํ„ฐ ์ •๋ ฌ์ด ๋˜๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ๋ฒ„๋ธ”์ •๋ ฌ(Bubble Sort) //MARK: - Framework import Foundation //MARK: - Function func solution() -> Void { //MARK: - input guard let N: Int = Int(readLine() ?? "0") else { return } guard let input = readLine()?.components(separatedBy: " ") else { return } v..

์‚ฝ์ž…์ •๋ ฌ(Insertion Sort)

1. ๋ฌธ์ œ ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์‚ฝ์ž…์ •๋ ฌ์„ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์›์†Œ๋ฅผ ์™ผ์ชฝ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•˜์—ฌ ์ •๋ ฌํ•ด ๋‚˜๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์‚ฝ์ž…์ •๋ ฌ(Insertion Sort) //MARK: - Framework import Foundation //MARK: - Function func solution() -> Void { //MARK: - input guard let N: Int = Int(readLine() ?? "0") else { return } guard let input = readLine()?.components(separatedBy: " ") else { return } var array: Array = input.map ..

์„ ํƒ์ •๋ ฌ(Selection Sort)

1. ๋ฌธ์ œ ๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์„ ํƒ์ •๋ ฌ์„ ๊ตฌํ˜„ 2. ๋ฌธ์ œ ์„ค๊ณ„ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ •๋ ฌํ•ด ๋‚˜๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง 3. ์ „์ฒด ์ฝ”๋“œ //MARK: - ์„ ํƒ์ •๋ ฌ(Selection Sort) //MARK: - Framework import Foundation //MARK: - Function func solution() -> Void { //MARK: - input guard let N: Int = Int(readLine() ?? "0") else { return } guard let input = readLine()?.components(separatedBy: " ") else { return } var array: Array = input.map { Int($0) ?..

ํ€ต์ •๋ ฌ ๊ตฌํ˜„ํ•˜๊ธฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ pivot์ด ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ํ‰๊ท ์ ์œผ๋กœ O(n log n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ , ๋ฐฐ์—ด์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ตœ์•…์˜ ๊ฒฝ์šฐ), O(n ^ 2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง pivot์„ ๊ธฐ์ค€์œผ๋กœ ํฌ๊ณ  ์ž‘์€ ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๊ณ , ๋‹ค์‹œ ํ€ต์ •๋ ฌํ•˜๋Š” ์žฌ๊ท€์ ์ธ ํŒจํ„ด์ด๋ฏ€๋กœ, ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ํ€ต์ •๋ ฌ ๊ตฌํ˜„ํ•˜๊ธฐ //MARK: - Framework import Foundation //MARK: - Function func getLeft(_ array: [Int], _ start: Int, _ end: Int, _ pivot: Int, _ left: inout [Int]) -> Int { v..

ํ•ฉ๋ณ‘์ •๋ ฌ ๊ตฌํ˜„ํ•˜๊ธฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ O(n log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„, ํ•ฉ๋ณ‘์ •๋ ฌ ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋‹ค์‹œ ํ•ฉ๋ณ‘์ •๋ ฌํ•˜๋Š” ์žฌ๊ท€์ ์ธ ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ์›์†Œ๊ฐ€ 1๊ฐœ๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ ๋‚˜๋ˆ„๊ณ (๊ธฐ์ € ์กฐ๊ฑด), ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ž„์‹œ ๋ฐฐ์—ด์— ์›์†Œ๋ฅผ ํ•ฉ์น˜๊ณ  ๋‹ค์‹œ ์›๋ž˜์˜ ๋ฐฐ์—ด์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ 5. ์ „์ฒด ์ฝ”๋“œ //MARK: - ํ•ฉ๋ณ‘์ •๋ ฌ ๊ตฌํ˜„ํ•˜๊ธฐ //MARK: - Framework import Foundation //MARK: - Variable var tempArray: [Int] = [] //MARK: - Function func merging(_ array: inout [Int], _ s1: Int, _ e1: Int,..

K๋ฒˆ์งธ ํฐ ์ˆ˜ ์ฐพ๊ธฐ

1. ๋ฌธ์ œ 2. ์ž…์ถœ๋ ฅ 3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ 4. ๋ฌธ์ œ ์„ค๊ณ„ ๋ฌธ์ œ์˜ ํฌ๊ธฐ๊ฐ€ 100,000 ์ด๋ฏ€๋กœ O(n^2)์œผ๋กœ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Œ. ๋”ฐ๋ผ์„œ, ์‚ฝ์ž… ์ •๋ ฌ, ์„ ํƒ ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ ๋ณด๋‹ค๋Š” ํ•ฉ๋ณ‘์ •๋ ฌ, ํ€ต ์ •๋ ฌ ๋“ฑ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ ํ•˜์ง€๋งŒ ๋‚ด์žฅ ํ•จ์ˆ˜์ธ sort() ํ˜น์€ sorted()๊ฐ€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—๋Š” ๊ฐ€์žฅ ๋น ๋ฅด๋ฏ€๋กœ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ ์ž…๋ ฅ ๋ฐ›์€ ์ •๋ ฌ์„ sorted() ํ•จ์ˆ˜๋กœ ์ •๋ ฌ ํ›„ k = 1์ผ ๊ฒฝ์šฐ ์ œ์ผ ํฐ ์›์†Œ ์ด๋ฏ€๋กœ ๊ฑฐ๊พธ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ ‘๊ทผ ํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ 5. ์ „์ฒด ์ฝ”๋“œ // // main.swift // Knumber // // Created by ์ด์˜์žฌ on 2022/02/28. //MARK: - k๋ฒˆ์งธ ํฐ ์ˆ˜ ์ฐพ๊ธฐ //MARK: - Framework import Foundat..