2019.03.05) 백준 스택 심화 1편 - 6549 (PyPy3)
2019. 3. 5. 23:42ㆍ프로그래밍(주력)/백준 문제풀이
너무 어려웠다.
아직도 로직이 이해가 안간다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | while True: l = list(map(int, input().split(' '))) n = l[0] # 0이면 탈출 if n == 0: break l = l[1:] mx = 0 stack = [0] # 전체 탐색 for i in range(1, n): # 스텍이 비어있지 않고, 탐색할 곳이 지금보다 클때 while len(stack) != 0 and l[stack[-1]] > l[i]: # 맨 위의 값 출력 tmp = stack.pop() # 만약 출력하고 스택이 비면 if len(stack) != 0: w = i - stack[-1] - 1 else: w = i # 넓이 비교 mx = max(mx, l[tmp] * w) stack.append(i) # 트리거 전에 끝나면 끝쪽 처리 while len(stack) != 0: tmp = stack.pop() if len(stack) != 0: w = n - stack[-1] - 1 else: w = n mx = max(mx, l[tmp] * w) print(mx) | cs |
'프로그래밍(주력) > 백준 문제풀이' 카테고리의 다른 글
2019.03.07) 백준 이분탐색 특집 1편 -10815 (PyPy3) (0) | 2019.03.07 |
---|---|
2019.03.06) 백준 완전탐색 특집 3편 - 2667, 1012 (PyPy3) (0) | 2019.03.06 |
2019.03.04) 백준 완전탐색 특집 2편 - 1697 (PyPy3) (0) | 2019.03.04 |
2019.03.03) 백준 완전탐색 특집 1편 - 1260 (PyPy3) (0) | 2019.03.03 |
2019.03.02) 백준 dfs 특집 2편 - 14888, 2800(PyPy3) (0) | 2019.03.02 |