-
백준 파이썬 10828번 : 스택 시간초과 해결기타/알고리즘 2020. 12. 3. 22:35반응형
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
스택을 몰라도 충분히 풀 수 있다. solved.ac에서 실버4 판정을 받고 있는데, 절대 그럴만한 문제는 아니다.
다만 정답률이 상당히 낮은데, 시간이 빡빡해서 그렇다. 별다른 궁리가 필요하지는 않고, input대신에 값을 입력받는 데 더 빠른 readline을 쓰면 된다.
백준 문제에서 시간초과가 날 때는 대부분 readline을 쓰거나 PyPy로 제출하면 해결된다.
참고로
import sys
input = sys.stdin.readline
을 입력해두면 input 함수를 사용하는 것처럼 입력하면서 readline을 이용할 수 있다.
import sys input = sys.stdin.readline n = int(input()) stk = [] for _ in range(n): x = list(map(str,input().split())) if x[0] =='push': stk.append(int(x[1])) elif x[0] =='pop': if stk: print(stk.pop()) else: print('-1') elif x[0] =='size': print(len(stk)) elif x[0] =='empty': if stk: print('0') else: print('1') elif x[0] =='top': if stk: print(stk[-1]) else: print('-1')
반응형'기타 > 알고리즘' 카테고리의 다른 글
[파이썬] 리트코드 238. Product of Array Except Self 풀이 (0) 2020.12.14 [백준 파이썬 1966번 : 프린터 큐] 큐를 이용한 풀이 (0) 2020.12.05 백준 파이썬 2428번 : 표절 이진탐색 풀이 (0) 2020.12.03 백준 파이썬 11947번 : 이런 반전이 풀이 (0) 2020.12.02 백준 파이썬 5800번 : 성적 통계 풀이 (0) 2020.12.01