์ค์ํํธ๋ก ๊ตฌํํ๋ ์๋ฃ๊ตฌ์กฐ 1: ์คํ(Stack)
์คํ (Stack)
์คํ์ LIFO(Last In First Out)์ ํน์ง์ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์คํ์ ์๋ฃ๋ฅผ ์ ์ฅํ ๋, ๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง์ ๊บผ๋ด๊ฒ ๋ฉ๋๋ค. ์ค์ํํธ์ ๋ฐฐ์ด์ ์คํ๊ณผ ๋์ผํ append, removeLast ๋ฉ์๋๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ํ ๋ฒ ๊ฐ์ธ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋ฉด ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ผ๋ ๋ง๋ค๊ธฐ
struct Stack<T> {
var elements: [T] = []
var count : Int {
return elements.count
}
var isEmpty : Bool {
return elements.isEmpty
}
}
๋จผ์ , ์ ๋ค๋ฆญ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์๋ ๋ฐฐ์ด ํ๋๋ฅผ ๋ง๋ค์ด์ค๋๋ค. ์คํ์ ๋ด๊ธด ๋ฐ์ดํฐ์ ๊ฐ์์ ์คํ์ด ๋น์ด์๋์ง ์ฌ๋ถ๋ ์ค์ํํธ์์ ์ ๊ณตํ๋ count ์ฐ์ฐ ํ๋กํผํฐ์ isEmpty ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ฃ ?
์ฝ์ (push) - O(1)
mutating func push(_ element: T) {
elements.append(element)
}
์ฝ์ ๋ ๋ฐฐ์ด์ append ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
์กฐํ(top) - O(1)
func top() -> T? {
return elements.last
}
์คํ์ ์กฐํ๋ ํน์ ํ ์์๋ฅผ ์กฐํํ๋ ๊ฒ์ด ์๋๋ผ, ์คํ์ ๊ฐ์ฅ ์์ ์์ฌ์๋ ์์๋ฅผ ์กฐํํ ์ ์๊ฒ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด์ last ํ๋กํผํฐ๋ฅผ ํตํด ๋ง์ง๋ง ์์๋ฅผ ๋ฐํํฉ๋๋ค.
์ญ์ (pop) - O(1)
mutating func pop() -> T? {
return elements.popLast()
}
์ญ์ ๋ ๊ทธ๋๋ก... ํ ๊ฐ์ง ํ์ removeLast๋ ๋ฐฐ์ด์ด ๋น์ด์์ ๋ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง๋ง, popLast๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ด ๋น์ด์์ ๋๋ nil์ ๋ฐํํฉ๋๋ค.
์ ์ฒด ์ฝ๋
์คํ์ ๋ฐฐ์ด ๊ทธ ์์ฒด๋ผ์ ํฌ๊ฒ ์์ธํ ์์ฑํ ๋ด์ฉ์ด ์๋ค์..! ์ด๋ ๊ฒ ๊ฐ๋ณ๊ฒ ์์ํด์ ์๋ฃ๊ตฌ์กฐ ์๋ฆฌ์ฆ๋ฅผ ๋ฌ๋ ค๋ณด๊ฒ ์ต๋๋ค! ๐ช
์๋ฃ๊ตฌ์กฐ ์๋ฆฌ์ฆ์ ์ฝ๋๋ค์ ์ด ๋ ํฌ์์ ๋ชจ๋ ํ์ธํ ์ ์์ด์!
'๐ฎ ์จ-์์ค > ๐ฆด ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote