앎을 경계하기

Programming/Algorithm 36

백준 #1874 - 스택 수열 python

처음 접근법 : 스택 두 개를 만들고 하나 스택은 push 하는 용도, 나머지는 pop 하는 용도 → 시간 초과, 메모리 초과 두번째 접근법 : 덱 하나에 push 했다가 pop한 숫자들 다시 덱에 넣어서 계속 검사하게 만듦 → 시간 초과 세번째 접근법 : 스택 하나에 입력된 수 만큼 넣었다가 top이 입력한 수와 맞으면 pop하도록 함 → 정답 import sys import collections n = int(sys.stdin.readline()) stack = collections.deque() ans = '' idx = 0 for i in range(n): num = int(input()) while idx = idx: idx+=1 ans+='+\n' stack.appe..

백준 #10828 - 덱 python

큐 문제와 마찬가지로 스택 문제 코드 가져와서 변형함 2019/10/19 - [Study/Algorithm] - 백준 #10845 - 큐 python 백준 #10845 - 큐 python 스택 코드 가져와서 조건에 맞게 조금씩 변경함. instruction = int(input()) queue = [] ins = {} for i in range(instruction): ins[i] = input().split(' ') for i in range(instruction): if ins[i][0] == 'pu.. whereisend.tistory.com 2019/10/19 - [Study/Algorithm] - 백준 #10828 - 스택 python 백준 #10828 - 스택 python instruction..

백준 #17298 - 오큰수 python

stack은 index가 저장됨 seq에 저장된 숫자끼리 비교하면서 옆 숫자가 크면 ans에 넣고 index도 바뀜 무턱대고 배열 내 숫자 전체를 다 비교하면 시간 초과 발생하기 때문에 비교를 해야 하는 경우에만 루프를 돌도록 해야 한다. import sys N = int(sys.stdin.readline()) seq = list(map(int, sys.stdin.readline().split())) stack = [] ans = [-1 for _ in range(N)] stack.append(0) i = 1 while stack and i < N: while stack and seq[stack[-1]] < seq[i]: ans[stack[-1]] = seq[i] stack.pop() stack.appe..

백준 #10828 - 스택 python

instruction = int(input()) stack = [] ins = {} for i in range(instruction): ins[i] = input().split(&#39; &#39;) for i in range(instruction): if ins[i][0] == &#39;push&#39;: # 정수 x 스택에 넣음 stack.insert(0,int(ins[i][1])) elif ins[i][0] == &#39;top&#39;: # 스택 가장 위 정수 출력 정수 없는 경우 -1 if len(stack) != 0: print(stack[0]) else: print(-1) elif ins[i][0] == &#39;size&#39;: # 스택 정수 개수 출력 print(len(stack)) e..