본문 바로가기

스택

(4)
[ BOJ / 파이썬 ] 4949.균형잡힌 세상 1차 풀이 . 실패 import sys input = sys.stdin.readline def checkIsCorrect(text): stack = [] pair = {']':'[', ')':'(' } for t in text: if t == '[' or t =='(': stack.append(t) if t == ']' or t == ')': if not stack: return False if stack and stack[-1] != pair[t]: return False if stack and stack[-1] == pair[t]: stack.pop() if stack: return False else: return True def main(): text = '' while text != '.': t..
[ BOJ / 파이썬 ] 10828 스택 간만에 푸니까 파이썬 입출력 시간초과 제한에 대해서 까먹었다. 풀이는 맞았는데 시간초과가 나서 혹시나 했더니 역시나였다. import sys input = sys.stdin.readline def main(): n = int(input()) stack = [] for _ in range(n): oper = input().strip() #push X: 정수 X를 스택에 넣는 연산이다. if len(oper) > 3 and oper[:4] == 'push': oper, x = oper.split(' ') x = int(x) stack.append(x) #pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. if oper == 'pop..
[ BOJ / 파이썬 ] 2504 괄호의 값 음.. sum 값을 따로 빼주는 생각을 못 했다. 쉬울 줄 알았는데 은근 까다로운 문제다.. / 제출 1 / import sys input = sys.stdin.readline brackets = list(input()) stack = [] num = 1 sum = 0 for b in brackets: if b == '(': stack.append(b) num *= 2 elif b == '[': stack.append(b) num *= 3 elif b == ')': if not stack or stack[-1] != '(': sum = 0 break if stack[-1] == '(': sum += num stack.pop() num //= 2 elif b == ']': if not stack or st..
[ BOJ / 파이썬 ] 3986 좋은 단어 / 제출 1 / import sys input = sys.stdin.readline n = int(input()) answer = 0 for i in range(n): words = list(input().strip()) stack = [] for word in words: if not stack: stack.append(word) else: if stack[-1] == word: stack.pop() else: stack.append(word) if not stack: answer += 1 print(answer)