์ƒˆ์†Œ์‹

์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์Šคํƒ์ด๋ž€?

  • -

๐Ÿ’ก์Šคํƒ(Stack)

๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์ˆœ์„œ๋Š” ํ›„์ž…์„ ์ถœ(FILO)๋ฐฉ์‹

์ฆ‰, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ฃ์—ˆ๋˜ ๊ฐ’์ด ๊ฐ€์žฅ ๋จผ์ € ๋ฝ‘ํžˆ๋Š” ๊ตฌ์กฐ

  • ํƒ‘ : ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์˜ ์œ„์น˜
  • ๋ฒ ์ด์Šค: ๋‚จ์•„ ์žˆ๋Š” ํ•ญ๋ชฉ ์ค‘์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์˜ ์œ„์น˜

 


์Šคํƒ์˜ ์žฅ๋‹จ์ 


- ์žฅ์ 
๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด์„œ ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.
๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋น ๋ฅด๋‹ค.

- ๋‹จ์ 
๋งจ ์œ„์˜ ์›์†Œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
ํƒ์ƒ‰์„ ํ•˜๋ ค๋ฉด ์›์†Œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๊บผ๋‚ด์„œ ์˜ฎ๊ฒจ๊ฐ€๋ฉด์„œ ํ•ด์•ผํ•œ๋‹ค. O(n)



โœŒ๐Ÿป ์Šคํƒ์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ

์Šคํƒ์—๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ (method)๊ฐ€ ์กด์žฌํ•œ๋‹ค.


add, push

์Šคํƒ์— ๊ฐ’์„ ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ๋Š” add ๋˜๋Š” push๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋‘ ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ ์Šคํƒ์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ƒˆ๋กœ ๋„ฃ์€ ๊ฐ’์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ๋‹ค.
๋งจ ์œ„์— ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ฏ€๋กœ O(1)

peek

peek๋Š” ๋‹ค์Œ์— ๋‚˜์˜ฌ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ํ•˜์ง€๋งŒ ์Šคํƒ์€ ํ›„์ž…์„ ์ถœ์˜ ์›๋ฆฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ํ˜ธ์ถœ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค.
๋งˆ์ง€๋ง‰ ๊ฐ’๋งŒ ํ™•์ธํ•˜๋ฉด ๋˜๋ฏ€๋กœ O(1)

pop

pop์€ ํ์˜ poll๊ณผ ๊ฐ™๋‹ค. ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋Š” ๋™์‹œ์— ์ œ๊ฑฐํ•˜๊ฒŒ ๋œ๋‹ค.  peek์„ ํ–ˆ์„ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๋’ค์— ์œ„์น˜ํ•œ ๊ฐ’์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š์ง€๋งŒ pop ์ดํ›„์—๋Š” ๊ฐ’์ด ์‚ฌ๋ผ์ง„๋‹ค. ๋”ฐ๋ผ์„œ ํ•„์š”์— ๋”ฐ๋ผ peek๊ณผ pop์„ ์ ์ ˆํ•˜๊ฒŒ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.
๋งˆ์ง€๋ง‰ ๊ฐ’๋งŒ ์‚ญ์ œํ•˜๋ฉด ๋˜๋ฏ€๋กœ O(1)

size

size๋Š” ๋ชจ๋“  ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ int ํ˜•ํƒœ๋ฅผ ๋„๊ฒŒ๋˜๋ฉฐ, ์Šคํƒ์ด ๋น„๊ฒŒ๋˜๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

clear

clear ์—ญ์‹œ ์ต์ˆ™ํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ƒ์„ฑ๋œ ์Šคํƒ์„ ํ•œ๋ฒˆ์— ๋น„์šฐ๋Š” ๋ฉ”์„œ๋“œ๋กœ, ์Šคํƒ ์ž์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

isEmpty

isEmpty๋Š” ์Šคํƒ์ด ๋ชจ๋‘ ๋น„์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์€ boolean ํ˜•ํƒœ๋กœ ์ฃผ๋กœ while๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.



โฐ ์Šคํƒ ์‹œ๊ฐ„๋ณต์žก๋„

  • ์‚ฝ์ž… : O(1)
  • ์‚ญ์ œ : O(1)
  • ํƒ์ƒ‰: O(n)


์‚ญ์ œ๋‚˜ ์‚ฝ์ž…์‹œ ๋งจ ์œ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋Š˜ O(1) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
ํ•˜์ง€๋งŒ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ O(n) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.



์‚ฌ์šฉ ์˜ˆ์‹œ (Kotlin)

import java.util.*

fun main(args:Array<String>){
    var s = Stack<Int>()

    s.push(1) // ๊ฐ์ฒด๋ฅผ ์Šคํƒ์— ์ถ”๊ฐ€
    s.push(3)

    s.peek() // ๋งจ ์œ„์˜ ๊ฐ์ฒด ๋ฐ˜ํ™˜ (๋น„์–ด ์žˆ๋Š” ์ƒํƒœ์ด๋ฉด EmptyStackException ๋ฐœ์ƒ)
    println(s)

    s.pop() // ๋งจ ์œ„์˜ ๊ฐ์ฒด ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜ (๋น„์–ด ์žˆ๋Š” ์ƒํƒœ์ด๋ฉด EmptyStackException ๋ฐœ์ƒ)
    println(s)
}
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.