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

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack)

๊ฒฝํ‘ธ 2022. 4. 18. 23:17
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”~

 

์˜ค๋Š˜์€ ์Šคํƒ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : )

 


 

์Šคํƒ(Stack)

 

์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๊ณ  ๊บผ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ ์Šคํƒ์ž…๋‹ˆ๋‹ค.

 

LIFO(Last In First Out)๋กœ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๊ฒŒ ๋˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ Push๋ผ๊ณ  ํ•˜๊ณ  ๊บผ๋‚ด๋Š” ๊ฒƒ์„ Pop์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

โœ”๏ธŽ Swift๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ธฐ

// ์ œ๋„ค๋ฆญ์‚ฌ์šฉ
struct Stack<T> { 
    private var stack: [T] = []
    
    // ์Šคํƒ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
    public var count: Int {
        return stack.count
    }
    
    // ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ”„๋กœํผํ‹ฐ
    public var isEmpty: Bool {
        return stack.isEmpty
    }
    
    // Push 
    public mutating func push(_ element: T) {
        stack.append(element)
    }
    
    // Pop
    public mutating func pop() -> T? {
        return isEmpty ? nil : stack.popLast()
    }
}

 

์œ„์™€ ๊ฐ™์ด ์Šคํƒ์„ ๋งŒ๋“œ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์กฐ์ฒด๋กœ ๋งŒ๋“ค์—ˆ๊ธฐ์— ๋ฉ”์„œ๋“œ๋Š” mutating ๋ฉ”์„œ๋“œ์ž„์„ ๋ช…์‹œํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด

 

var languageStack = Stack<String>()

print(languageStack.isEmpty) // True

languageStack.push("Swift")
languageStack.push("C")

print(languageStack.isEmpty) // false

print(languageStack.count) // 2

print(languageStack.pop()) // "C"

 

 

์Šคํƒ์„ ์ƒ์„ฑํ•˜๊ณ  Swift์™€ C๋ฅผ ์ˆœ์„œ๋Œ€๋กœ pushํ•œ ์ดํ›„ pop์„ ํ˜ธ์ถœํ•˜๋ฉด 

๋งˆ์ง€๋ง‰์— ๋„ฃ์€ C๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[ ๋‹ค์Œ ํฌ์ŠคํŒ…์€ ์ž๋ฃŒ๊ตฌ์กฐ ํ์ž…๋‹ˆ๋‹ค ]

 

[Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ํ(Queue)

์•ˆ๋…•ํ•˜์„ธ์œ ~ [Swift] ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack) ์•ˆ๋…•ํ•˜์„ธ์œ ~ ์˜ค๋Š˜์€ ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘์—์„œ ์Šคํƒ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค! ์‚ฌ์‹ค ์ด์ „์— ํ•™์Šต์„ ํ–ˆ์ง€๋งŒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ€๋ฌผ๊ฐ€๋ฌผํ•ด์ง€๋Š”.. ๊ทธ๋ž˜์„œ C

pooh-footprints.tistory.com

 

 

๊ทธ๋Ÿผ ์ด๋งŒ ๐Ÿ‘‹๐Ÿป ๐Ÿ‘‹๐Ÿป ๐Ÿ‘‹๐Ÿป

๋ฐ˜์‘ํ˜•