[λ°±μ€€/python] 10828번 : μŠ€νƒ

2021. 3. 29. 00:05

문제

μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” μŠ€νƒμ„ κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

λͺ…령은 총 λ‹€μ„― 가지이닀.

  • push X: μ •μˆ˜ Xλ₯Ό μŠ€νƒμ— λ„£λŠ” 연산이닀.
  • pop: μŠ€νƒμ—μ„œ κ°€μž₯ μœ„μ— μžˆλŠ” μ •μˆ˜λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ μŠ€νƒμ— λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • size: μŠ€νƒμ— λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
  • empty: μŠ€νƒμ΄ λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
  • top: μŠ€νƒμ˜ κ°€μž₯ μœ„μ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ μŠ€νƒμ— λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

μž…λ ₯

첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 10,000)이 μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© μ£Όμ–΄μ§„λ‹€. μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€. λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€ μ•Šμ€ λͺ…령이 μ£Όμ–΄μ§€λŠ” κ²½μš°λŠ” μ—†λ‹€.

 

좜λ ₯

좜λ ₯ν•΄μ•Όν•˜λŠ” λͺ…령이 μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€.

 

μ •λ‹΅

import sys
N = int(sys.stdin.readline())
stack = []

for i in range(N):
    cmd = sys.stdin.readline()

    #μ •μˆ˜λ₯Ό μŠ€νƒμ— λ„£λŠ” μ—°μ‚°
    if "push" in cmd:
        x = list(cmd.split())
        stack.append(x[1])

    #μŠ€νƒμ—μ„œ κ°€μž₯ μœ„μ— μ •μˆ˜λ₯Ό λΉΌκ³  좜λ ₯, μ—†λŠ” 경우 -1
    elif "pop" in cmd:
        if not stack:
            print(-1)
        else:
            print(stack.pop())

    #μŠ€νƒμ— λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수 좜λ ₯
    elif "size" in cmd:
        print(len(stack))

    #μŠ€νƒμ΄ λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0
    elif "empty" in cmd:
        if not stack:
            print(1)
        else:
            print(0)

    #μŠ€νƒμ˜ κ°€μž₯ μœ„μ— μžˆλŠ” μ •μˆ˜ 좜λ ₯, μ—†λŠ” 경우 -1
    elif "top" in cmd:
        if not stack:
            print(-1)
        else:
            print(stack[-1])

  • push : "push X"의 ν˜•νƒœλ‘œ μž…λ ₯받은 cmdλ₯Ό μͺΌκ°œ 리슀트 ν˜•μ‹μœΌλ‘œ x에 μ €μž₯ν•œ ν›„ x[1]값을 stack에 μ €μž₯
  • pop : stack.pop() 이용
  • size : len(stack) 이용
  • empty : if not stack을 μ΄μš©ν•˜μ—¬ λΉ„μ–΄μžˆλŠ”μ§€ 확인
  • top : stack[-1]을 μ΄μš©ν•΄ κ°€μž₯ μœ„μ— μžˆλŠ” κ°’ 좜λ ₯

πŸ’₯ μ‹œκ°„μ΄ˆκ³Όλ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ input() λŒ€μ‹  sys.stdin.readline()을 μ¨μ•Όν•œλ‹€.

BELATED ARTICLES

more