[백준] 10828번 스택 - PYTHON

Flash·2022년 3월 2일
0

프로그래밍 문제

목록 보기
20/33

[백준] 10828번

스택

PYTHON

10828번 스택

스택의 기본적인 기능인 Push, Pop, Size, Empty, Top을 구현하는 문제이다.

문제에서 설명한 기능들을 구현하는데 파이썬에서는 이러한 기능을 가진 리스트 자료구조가 존재한다.

list는 append, pop의 내장함수를 가지고
len 함수를 이용해서 size와 empty 여부를 파악할 수 있고
인덱스에 -1을 주는 것으로 가장 뒤에 있는 원소를 알 수 있다.

append는 제일 뒤에 원소를 삽입하고 pop은 제일 뒤에 원소를 삭제하므로 stack과 동일한 역할을 함을 알 수 있다.

하지만 이 문제에는 제한점이 하나 있다.
바로 0.5초의 시간 제한이다.


Input vs Sys

시간 제한을 극복하기 위해서는 sys 라이브러리를 사용한다.

input 내장 함수와 sys 라이브러리의 차이점을 살펴본다.

1

input() 내장 함수는 말그대로 함수이기 때문에 인자를 줄 수 있다. 입력을 받기 전에 어떤 입력을 받는지 표현하는 방식이 될 수 있다.

하지만 sys.stdin.readline()은 인자를 받을 수 없다.

2

input() 내장 함수를 사용하면 개행 문자가 삭제되는 반면 sys.stdin.readline()을 사용하면 개행 문자가 입력 값에 포함된다. 따라서 개행 문자를 삭제하고 싶다면 sys.stdin.readline().rstrip() 처럼 rstrip()을 붙여야 한다.

따라서 input() 내장 함수는 sys.stdin.readliine()보다 비교적 느린 속도를 지니게 된다.


소스 코드는 아래와 같다.

조금이라도 탐색 시간을 줄이기 위해서 top 변수를 이용하여 길이와 top에 위치한 인자 출력등에 이용했다.

profile
Whiplash We Flash

0개의 댓글