Algorithm/BOJ

λ°±μ€€(BOJ) 10828번 μŠ€νƒλ¬Έμ œ [파이썬(python) / μ‹œκ°„μ΄ˆκ³Ό μ—λŸ¬]

DAHLIA CHOI 2021. 6. 28. 00:26

https://www.acmicpc.net/problem/10828

 

10828번: μŠ€νƒ

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

www.acmicpc.net

 

λ°±μ€€ μ•Œκ³ λ¦¬μ¦˜ 10828번 μŠ€νƒλ¬Έμ œ

 

 

[문제]

 

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

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

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

 

[μž…λ ₯]

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

 

[좜λ ₯]

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

 

처음 λ°©λ²•μœΌλ‘œ ν’€μ—ˆμ„λ•Œ μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ„œ λ‹€λ₯Έ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ„œ ν’€μ—ˆλŠ”λ°λ„ μ‹œκ°„μ΄ˆκ³Όκ°€ 났닀....

μ°Ύμ•„λ³΄λ‹ˆκΉŒ input() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμ„ κ²½μš°μ— μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜κ²Œλœλ‹€...μ˜€λ§ˆμ΄κ°“..

 

κ·Έλž˜μ„œ

 

import sys

count= int(sys.stdin.readline()) 이것을 μ‚¬μš©ν•΄μ„œ μž…λ ₯을 λ°›μ•˜λ‹€!! 

 

 

 

1번 풀이

class Stack:
    def __init__(self):
        self.items = []
        
    def push(self, val):
        self.items.append(val)
        
    def pop(self):
        try:
            return self.items.pop()
        except IndexError:
            return (-1)
            
    def top(self):
        try:
            return self.items[-1]
        except IndexError:
            return (-1)
            
    def __len__(self):
        return len(self.items)
    
    def isEmpty(self):
        return len(self) == 0
    
    
import sys

count= int(sys.stdin.readline())

S = Stack()

for i in range(count):
    words = sys.stdin.readline().split()
    
    if words[0] == 'push':
        S.push(int(words[1]))
        
    elif words[0] == 'pop':
        print(S.pop())
    
    elif words[0] == 'size':
        print(S.__len__())
        
    elif words[0] == 'empty':
        if S.__len__() == 0: print(1)
        else: print(0)
    
    elif words[0] == 'top':
        print(S.top())

 

 

2번 풀이

count = int(input())
s = []

for i in range(count):
    words = input().split()
    
    if words[0] == 'push':
        s.append(words[1])
    
    elif words[0] == 'pop':
        if s: print(s.pop())
        else: print(-1)
    
    elif words[0] == 'size':
        print(len(s))
    
    elif words[0] == 'empty':
        if s: print(0)
        else : print(1)
    
    elif words[0] == 'top':
        if s : print(s[-1])
        else : print(-1)