DataStructure_1_01_스택(10828)

Eugenius1st·2022년 3월 14일
0

Algorithm_Baekjoon

목록 보기
2/158
post-thumbnail

DataStucture1_00스택(10828)

문제

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 다섯 가지이다.

push X: 정수 X를 스택에 넣는 연산이다.
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 스택에 들어있는 정수의 개수를 출력한다.
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

입력

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

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

풀이

  • input 을 받을 때 2가지 값과 단일값 처리를 어캐 하는지 막막했는데
  • 그냥 split() 되어 있는 것을 변수로 받으면, 길이 만큼 배열로 값들이 들어간다 !!
  • 그래서 변수에 '변수 = 배열[0]' 이런 식으로 단일 값을 저장해 주었다
  • if문을 주로 사용하여 cmd를 체크하였다.
  • 무엇보다 input() 함수에 return sys.stdin.readline().rstrip() 이 한 줄 추가 해주는게 시간이 반토막이 난다는 것이 중요...

코드

import sys
sys.stdin = open("input.txt", "rt")

def input():
    return sys.stdin.readline().rstrip()

N = int(input())
arr = []
for i in range(N):
    cmd = input().split()

    if len(cmd) == 2:
        val = cmd[1] #여기
    cmd = cmd[0] 


    if cmd == "push":
        arr.append(val)

    elif cmd == "pop":
        print(arr.pop() if len(arr) else -1)
        # True 때 값, False 때 값
        # 즉 안 비어있으면1, 비어있으면 0 

    elif cmd == "size":
        print(len(arr)) 

    elif cmd == "empty": #여기
        print(0 if len(arr) else 1)
        # True 때 값, False 때 값
        # 즉 안 비어있으면1, 비어있으면 0 

    elif cmd == "top":
        print(arr[-1] if len(arr) else -1)
        # True 때 값, False 때 값
        # 즉 안 비어있으면1, 비어있으면 0 






배운 것

  1. python 코드는 input 을 읽을 때 시간이 많이 걸리는 데 이때

    이 문구를 넣어주면 시간이 절약된다 !!!!!!!!!
def input():
    return sys.stdin.readline().rstrip()

2.if else 문을 한번으로 줄일 수 있다 이때 인라인 if 절을 사용한다

이 코드를

이렇게 한 줄로 바꾸는 것
True 일 때 값 if 조건 else Fasle 일 때 값

코멘트

  • 제출시 주의할 점
    1. return sys.stdin.readline().rstrip() 꼭 이 코드 넣어주어야 한다 !!
    아니면

    이렇게 됨 ㅋㅋㅋㅋ

이거 은근재밌네..

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글