import sys commend = sys.stdin.readline().rstrip() stick = [] # 쇠막대기 스택 result = 0 def addone(n): return n+1 for i in range(len(commend)): if commend[i] == '(': if commend[i+1] == ')': # ()가 나온 경우 쇠막대기 스택의 각 요소에 +1 stick = list(map(addone,stick)) else: stick.append(1) # ( 가 나온 경우 다음이 )가 아니면 쇠막대기 push elif commend[i] == ')': if commend[i-1] != '(': # )가 레이저가 아닌 경우 쇠막대기 pop하여 결과에 합연산 result += sti..
분류 전체보기
처음 의도와 다르게 흘러가서 코드가 조금 지저분해졌다 import sys word = [] # 단어스택 bracket = 0 # 꺽쇠 표시 line = sys.stdin.readline().strip() for i in range(len(line)): if line[i] == '',end='') bracket = 0 # 꺽쇠가 끝나면 표시 elif bracket == 1: # 꺽쇠가 끝날 때 까지 그냥 출력 print(line[i],end='') elif line[i] == ' ': # 공백을 만나면 스택 역출력 및 비움 while word: print(word.pop(),end='') print(' ',end='') else: if bracket == 0: # 꺽쇠 외부일 경우만 스택에 push wor..
import sys f_deque = [] b_deque = [] for i in range(int(sys.stdin.readline())): commend = sys.stdin.readline().split() if commend[0] == "push_front": f_deque.append(commend[1]) elif commend[0] == "push_back": b_deque.append(commend[1]) elif commend[0] == "pop_front": if f_deque: print(f_deque.pop()) elif b_deque: print(b_deque.pop(0)) else: print(-1) elif commend[0] == "pop_back": if b_deque: pr..
import sys commend = sys.stdin.readline().split() N , K = int(commend[0]),int(commend[1]) queue = list(map(int,range(1,int(N+1)))) output = [] pointer = 0 while(len(output)!=N): pointer = (pointer+(K-1))%len(queue) output.append(str(queue.pop(pointer))) print('') list 를 원판이라고 가정하고 진행 N = 7 / K = 3 인 경우, list = [1, 2, 3, 4, 5, 6, 7] / result = [ ] list = [4, 5, 6, 7, 1, 2] / result = [3] list = [..
import sys queue = [] for i in range(int(sys.stdin.readline())): commend = sys.stdin.readline().split() if commend[0] == "push": queue.append(commend[1]) elif commend[0] == "pop": if queue: print(queue.pop(0)) else: print(-1) elif commend[0] == "size": print(len(queue)) elif commend[0] == "empty": if queue: print(0) else: print(1) elif commend[0] == "front": if queue: print(queue[0]) else: print..
import sys str = list(input()) count = int(input()) cursor = len(str) for i in range(count): commend = sys.stdin.readline().split() if commend[0] == "P": str.insert(cursor,commend[1]) cursor += 1 elif commend[0] == "L" and cursor != 0: cursor -= 1 elif commend[0] == "D" and cursor < len(str): cursor += 1 elif commend[0] == "B" and cursor != 0: del str[cursor-1] cursor -= 1 for i in str: print(i,..
해당 문제는 1~10까지 오름차순으로 값을 스택에 push하는 규칙을 갖는다 입력받은 수열을 위 규칙 내에서 스택의 특징인 LIFO(후입선출)로 나열할 수 있는지를 묻는다 list = [] stack = [] result = [] next = 0 N = int(input("")) for i in range(N): list.append(int(input(""))) if next < list[i]: for j in range(list[i]-next): result.append("+") next += 1 stack.append(next) result.append("-") stack.pop() elif len(stack) == 0 or (stack[-1] < list[i] and list[i] < next): ..
N = int(input()) p_stack = [] p_str = [] def push(): p_stack.append(1) def pop(): if len(p_stack) == 0: p_stack.append(-1) return -1 else: p_stack.pop() for i in range(N): p_str.append([]) p_str[i] = input() for x in range(N): for y in range(len(p_str[x])): if p_str[x][y] == '(': push() else: if pop() == -1: break if len(p_stack) == 0: print("YES") else: print("NO") p_stack = []