본문 바로가기

스택5

백준 - 1406번 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 이번 문제는 풀 때 고생을 했습니다.. 처음에는 스택으로 풀고 시간 초과로 문자열로 다시 풀었는데 시간초과... 결국에는 스택으로 풀었습니다. 코드 import sys stk = list(sys.stdin.readline().strip()) M = int(input()) temp_stk = [] for _ in range(M): menu = sys.stdin.readline().strip()... 2020. 11. 9.
알고리즘 - 스택(deque) collection 모듈의 deque를 사용하면 간단하게 스택을 구현할 수 있습니다. stack_deque.py from typing import Any from _collections import deque class Stack: class Empty(Exception): pass class Full(Exception): pass def __init__(self, maxlen: int = 256) -> None: self.capacity = maxlen self.stk = deque([], maxlen) def __len__(self) -> int: return len(self.stk) def is_empty(self) -> bool: return not self.stk def is_full(self).. 2020. 11. 6.
백준 - 1874번(스택 수열) 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 코드 from typing import Any class Stack: def __init__(self, capacity: int) -> None: self.stk = [None] * capacity self.capacity = capacity self.ptr = 0 def push(self, value) -> .. 2020. 11. 4.
백준 - 10828번(스택) 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 import sys class Stack: def __init__(self): self.stk = [None] * 10000 self.ptr = 0 def push(self, value): self.stk[self.ptr] = value self.ptr += 1 def pop(self): self.ptr -= 1 if self.ptr < 0: self.ptr = 0 r.. 2020. 11. 4.