2021. 8. 24. 11:32ㆍProblem Solving/Baekjoon Online Judge
문제
풀이
import sys
n = int(sys.stdin.readline())
stack = []
for i in range(n):
cmd = sys.stdin.readline().strip()
if 'push' in cmd:
stack.append(cmd[5:])
elif cmd == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack.pop())
elif cmd == 'size':
print(len(stack))
elif cmd == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif cmd == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
구현 자체는 어렵지 않았지만 input()을 사용했다가 시간 초과가 나서 당황했던 문제.
input() 대신 sys.std.readline()을 사용해서 해결했다.
🌠input() vs sys.stdin.readline()
input([prompt])은 파이썬 내장함수다. prompt argument가 있을 때 argument는 줄 바꿈 문자 없이 출력된다. 그 후 input() 함수는 입력으로부터 한 줄을 읽고, 문자열로 변환한 후 반환한다. 줄 끝의 줄 바꿈 문자는 제거한다.
sys.stdin.readline()은 file object로 분류된다. 입력을 읽기 위해 다른 파일 객체를 만드는 것과 같다. input()과 달리 prompt argument를 받아 출력하지 않고, 줄 바꿈 문자를 제거하는 과정이 없다. 따라서 속도가 더 빠르다.
sys.stdin.readline()은 sys 모듈을 import 해서 사용한다.
* sys 모듈을 사용하면 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어 가능
풀이에서는 입력값의 개수 n을 맨 처음 입력받기 위해 int(sys.stdin.readline())을 사용했다. 형 변환을 해주지 않으면 줄 바꿈 문자를 포함한 값이 저장되기 때문에 주의해야 한다.
여러 줄의 명령을 입력받아야 하는 반복문 for에서는 sys.stdin.readline().rstrip()를 사용해 오른쪽 공백을 제거한 후 값을 입력받았다.
백준 18828번 : 스택
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
파이썬 공식문서
Built-in Functions — Python 3.9.6 documentation
Built-in Functions The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order. abs(x) Return the absolute value of a number. The argument may be an integer, a floating poin
docs.python.org
input() vs sys.stdin.readline()
[Python] Input vs. sys.stdin.readline 차이점?
Python으로 백준 문제를 풀 때 내장 함수 input()으로 입력을 받으면 시간 초과로 오답처리가 되고, sys 모듈의sys.stdin.readline()으로 입력을 받으면 시간 안에 채점이 되는 경우가 자주 발생한다. 왜 그
buyandpray.tistory.com
sys.stdin.readline() 사용법
[Python 문법] 파이썬 입력 받기(sys.stdin.readline)
파이썬으로 코딩 테스트를 준비한다면, 반드시 알아야 할 입력방식인 sys.stdin.readline()에 대한 정리 입니다.
velog.io
'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글
[BOJ/백준] 5430번 AC | 덱 | 파이썬 (2) | 2021.09.01 |
---|---|
[BOJ/백준] 1874번 스택 수열 | 파이썬 (2) | 2021.08.26 |
[BOJ/백준] 1697번 숨바꼭질 | BFS | 파이썬 (0) | 2021.08.11 |
[BOJ/백준] 7576번 토마토 | BFS | 파이썬 (0) | 2021.08.09 |
[BOJ/백준] 10809번 알파벳 찾기 | 문자열 (0) | 2021.07.08 |