목록stack (18)
기록방
👉 문제링크 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 🔸 문제 분석 🔸 후위 표기식을 구현하는 문제이다. 후위 표기식은 연산자 앞의 두 수에 연산자를 적용하는 계산법이다. 🔸 코드 🔸 N = int(input()) order = list(input()) num = [] for i in range(N): num.append(int(input())) stack = [] for i in order: if i >= 'A' and i
👉 문제링크 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 🔸 문제 분석 🔸 보는 방향에서 봤을때 보이는 블럭의 수를 출력한다. 스택을 사용해서 가려지는 블록을 제거하면 되는 문제이다. 🔸 코드 🔸 import sys input = sys.stdin.readline N = int(input()) arr = [0] for i in range(N): h = int(input()) while True: if len(arr) == 0: arr.append(h) break elif arr[-1]
👉 문제링크 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 🔸 문제 분석 🔸 숫자를 입력받다가 0이 입력되면 최근 값을 제외한다. 입력받은 숫자의 총 합을 출력한다. 🔸 코드 🔸 import sys from collections import deque input = sys.stdin.readline K = int(input().strip()) d = deque() for i in range(K): n = int(input().strip()) if n == 0: d.pop() ..
👉 문제링크 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 🔸 문제 분석 🔸 문자열을 처리와 스택 활용이 합쳐져있는 문제이다. 🔸 코드 🔸 import sys input = sys.stdin.readline while(True): ss = input().rstrip() if ss == ".": break stack = [] check = False for c in ss: if c == '(' or c == '[': stack.append(c) elif c == ')': if len(st..
👉 문제링크 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 🔸 문제 분석 🔸 괄호의 쌍을 확인하는 전형적인 스택 문제이다. 🔸 코드 🔸 T = int(input()) for i in range(T): S = input() arr = S[0] flag = False for j in S[1:]: if j == '(': arr += j else: if len(arr) == 0 or arr[-1] == ')': flag = True break else : arr = arr[:-1] i..