์๋ ํ์ธ์~
์ค๋์ ์คํ์ ๋ํด์ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค : )
์์ ๊ทธ๋ฆผ์ฒ๋ผ ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์๊ณ ๊บผ๋ผ ์ ์๊ฒ ๋ง๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฐ๋ก ์คํ์ ๋๋ค.
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] ์๋ฃ๊ตฌ์กฐ - ํ(Heap) (0) | 2023.01.30 |
---|---|
[Swift] ์๋ฃ๊ตฌ์กฐ - ์ด์ง ํ์ํธ๋ฆฌ ( Binary Search Tree ) (0) | 2022.05.14 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ํด์ ํ ์ด๋ธ(Hash Table) (0) | 2022.04.21 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ๋จ๋ฐฉํฅ / ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) (2) | 2022.04.20 |
[Swift] ์๋ฃ๊ตฌ์กฐ - ํ(Queue) (0) | 2022.04.19 |