😁 빅데이터 문제 풀기 & Study/- BAEKJOON 문제

[10828번] 스택 / python3 (닌텐도 코딩테스트 같은 느낌?)

또방91 2021. 11. 12. 11:40
728x90

문제 링크: https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

어제 저녁 닌텐도 코딩테스트 체험판을 하고 나서 그런지

하나하나 명령어를 입력하는 문제를 보니 떠올랐다.

시간제한이 0.5초라는 짧은 시간이기에, input( )대신 sys.stdin.readline( )을 써줘야한다.


❓ 정답은 ??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
 
n=int(sys.stdin.readline())
list= [ ]
 
for _ in range(n):
    test=sys.stdin.readline().split()
    
    if test[0]== 'push':
        list.append(test[1])
    
    elif test[0]=='pop':
        if len(list)>0:
            print(list.pop())
        else:       
            print(-1)
        
    elif test[0]=='size':
        print(len(list))
        
    elif test[0]=='empty':
        if len(list)==0:
            print(1)
        else:
            print(0)
 
    elif test[0]=='top':
        if len(list)>0:
            print(list[len(list)-1])
        else:       
            print(-1)
cs

💯 풀이 과정

문제에 주어진 명령어들에 대해 하나씩 코드를 써본다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# push X: 정수 X를 스택에 넣는 연산이다.
list.append(x)
 
# pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
if len(list)>0:
    print(list.pop()) 
else:
    print(-1)
 
# size: 스택에 들어있는 정수의 개수를 출력한다.
len(list)
 
# empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
if len(list)==0:
    print(True)
else:
    print(False)
 
# top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
if len(list)>0:
  print(list[len(list)-1])
else:       
   print(-1)
cs

🎇여기서 주의할 점

push의 경우, 숫자 x라고 입력 되는 게 아니라 'push x'라고 입력 되기에

입력되는 것에 앞부분이 'push'라면 그 다음 나오는 것을 x라고 생각하고 코드식으 실행하게 해야한다!


😎오늘의 한줄평: 간단한 식의 나열로 만든 긴 코드식이어서 그런지.. 이런 문제만 풀고싶엉

728x90