๐Ÿšถโ€โ™‚๏ธRoad to ์ฝ”ํ…Œ(4) - ์Šคํƒ

์•ˆํƒœํ˜„ยท2024๋…„ 12์›” 18์ผ

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
4/15

๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ BaaarkingDog๋‹˜์˜ ์‹ค์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[์ถ”๊ฐ€] ์šฉ๊ฐํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ถ”๊ฐ€] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ - ํŒŒ์ด์ฌ ํŽธ

์Šคํƒ

ํ•œ์ชฝ ๋์—์„œ๋งŒ ์›์†Œ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.
๊ตฌ์กฐ์ ์œผ๋กœ ๋จผ์ € ๋“ค์–ด๊ฐ„ ์›์†Œ๊ฐ€ ์ œ์ผ ๋‚˜์ค‘์— ๋‚˜์˜ค๋Š”๋ฐ ์ด๋ฅผ FILO(First In Last Out) ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•œ๋‹ค.
ํ๋‚˜ ๋ฑ๋„ ํŠน์ • ์œ„์น˜์—์„œ๋งŒ ์›์†Œ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋นผ๊ธฐ ๋•Œ๋ฌธ์— ์„ธ ๊ฐœ๋ฅผ ๋ฌถ์–ด์„œ Restricted Structur๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

์„ฑ์งˆ

  • ์›์†Œ์˜ ์ถ”๊ฐ€๊ฐ€ O(1)
  • ์›์†Œ์˜ ์ œ๊ฑฐ๊ฐ€ O(1)
  • ์ œ์ผ ์ƒ๋‹จ์˜ ์›์†Œ ํ™•์ธ์ด O(1)
    ๋ฐฐ์—ด์˜ ๋์—์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™๋‹ค.
  • ์ œ์ผ ์ƒ๋‹จ์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ํ™•์ธ ๋ฐ ๋ณ€๊ฒฝ์ด ์›์น™์  ๋ถˆ๊ฐ€๋Šฅ.
    ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์€ ์Šคํƒ์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ตฌํ˜„

  • ๋ฐฐ์—ด ํ˜น์€ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฐฐ์—ด์ด ๋” ์‰ฝ๋‹ค.
stack=[]
MAX_SIZE=10
pos=0

def top(stack):
  return stack[pos-1]

def  isFull(stack):
  return len(stack)==MAX_SIZE

def isEmpty(stack):
  return len(stack)==0

def push(stack,item):
  if isFull(stack):
    print("์Šคํƒ์ด ๊ฐ€๋“ ์ฐผ์Šต๋‹ˆ๋‹ค.")
  else:
    stack.append(item)
    print("๋ฐ์ดํ„ฐ ์ถ”๊ฐ€")

def pop(stack):
  if isEmpty(stack):
    print('์Šคํƒ์ด ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค.')
    return None
  else:
    print(f'{top(stack)}์ด ๋‚˜๊ฐ€์ง‘๋‹ˆ๋‹ค.')
    return stack.pop()
  
  

# ์Šคํƒ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
stack.append(1)
stack.append(2)
stack.append(3)

# ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋ƒ„
top_element = stack.pop( ) 
next_element = stack.pop( ) 

# ์Šคํƒ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•จ
stack_size = len(stack)
print(stack)

์‚ฌ์‹ค ๊ตณ์ด push,pop ๊ตฌํ˜„ ์•ˆํ•˜๊ณ  append,pop์จ๋„ ๋˜๊ธด ํ•œ๋‹ค.

์—ฐ์Šต๋ฌธ์ œ - ๋ฐฑ์ค€ 10828

import sys

stack=[]

def top(stack):
  if len(stack) == 0:
    return print(-1)
  else:
    return print(stack[-1]) 


def empty(stack):
  if len(stack)==0:
    return print(1)
  else:
    return print(0)

def push(stack,item):
  stack.append(item)

def size(stack):
  return print(len(stack))

def pop(stack):
  if len(stack) == 0:
    return print(-1)
  else:
    return print(stack.pop())

N=int(sys.stdin.readline())
for _  in range(N):
    a=sys.stdin.readline().split()
    if a[0]=='push':
      push(stack,a[1])
    elif a[0]=='pop':
      pop(stack)
    elif a[0]=='size':
      size(stack)
    elif a[0]=='empty':
      empty(stack)
    elif a[0]=='top':
      top(stack)

์ž๊พธ ํ•˜๋‚˜์”ฉ ๋นผ๋จน์–ด์„œ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋œจ๋‹ˆ ์ฃผ์˜ํ•˜์ž

profile
๊ณ ๊ฐ์—๊ฒŒ ์‹ ๋ขฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์•ˆํƒœํ˜„์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€