μŠ€νƒ

πŸ“„ 문제

문제

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

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

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

μž…λ ₯

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

좜λ ₯

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

🧞 풀이

더보기

풀이

'''
input()을 μ‚¬μš©ν•˜λ©΄ μ‹œκ°„ μ΄ˆκ³Όκ°€ λ‚œλ‹€.
λ”°λΌμ„œ sysλ₯Ό λΆˆλŸ¬μ™€, stdin.readline()을 ν™œμš©ν•œλ‹€.
'''

import sys

n = int(sys.stdin.readline())                   # μ •μˆ˜ n μž…λ ₯ 및 ν• λ‹Ή
stack = []                                      # 빈 μŠ€νƒ ν• λ‹Ή

for _ in range(n):                              # n번 반볡
    w = list(sys.stdin.readline().split())      # w둜 λͺ…λ Ή 뢈러였기
    command = w[0]                              # λͺ…λ Ήμ–΄ ν• λ‹Ή
    if len(w) == 2:                             # λͺ…λ Ήμ–΄ 뒀에 μ •μˆ˜κ°€ μžˆμ„ 경우
        num = int(w[1])                         # μ •μˆ˜λŠ” num에 ν• λ‹Ή

    if command == 'push':                       # λͺ…λ Ήμ–΄κ°€ push일 경우,
        stack.append(num)                       # stack에 ν•΄λ‹Ή num μΆ”κ°€

    elif command == 'pop':                      # λͺ…λ Ήμ–΄κ°€ pop일 경우,
        if len(stack) != 0:
            print(stack.pop())                  # stack에 맨 λ’€μ˜ μ •μˆ˜ pop() ν•˜κ³  좜λ ₯
        else:
            print(-1)

    elif command == 'size':                     # λͺ…λ Ήμ–΄κ°€ size일 경우,
        print(len(stack))                       # stack의 길이 좜λ ₯

    elif command == 'empty':                    # λͺ…λ Ήμ–΄κ°€ empty일 경우,
        if len(stack) == 0:
            print(1)                            # μŠ€νƒμ΄ λΉ„μ–΄ μžˆλ‹€λ©΄ 1, μ•„λ‹ˆλ©΄ 0 좜λ ₯
        else:
            print(0)

    elif command == 'top':                      # λͺ…λ Ήμ–΄κ°€ top일 경우,
        if len(stack) != 0:
            print(stack[-1])                    # μŠ€νƒμ—μ„œ κ°€μž₯ 높이 μžˆλŠ” μ •μˆ˜ 좜λ ₯
        else:
            print(-1)

+ Recent posts