전체 글 206

파이썬 백준 12846 무서운 아르바이트

n = int(input()) l = list(map(int, input().split())) l.append(0) l.append(0) for i in range(n) : l[n-i] = l[n-i-1] l[0] = 0 stack = [[0, 0]] maxarea = 0 for i in range(1, n+2) : h = l[i] while stack[-1][1] > h : sh = stack[-1][1] del stack[-1] while stack[-1][1] == sh : del stack[-1] area = (i - stack[-1][0] - 1) * sh maxarea = max(maxarea, area) stack.append([i, h]) print(maxarea) x축이 날짜, y축이 임..

파이썬 백준 14003 가장 긴 증가하는 부분 수열 5

from bisect import bisect_left n = int(input()) l = list(map(int,input().split())) order = [0 for i in range(n)] order[0] = 1 table = [l[0]] for i in range(1, n) : if table[-1] < l[i] : table.append(l[i]) order[i] = len(table) else : order[i] = bisect_left(table, l[i]) + 1 table[order[i] - 1] = l[i] m = max(order) print(m) lis = [] for i in range(n) : if order[n-1-i] == m : lis.append(l[n-1-i]) ..

파이썬 백준 14002 가장 긴 증가하는 부분 수열 4

n = int(input()) l = list(map(int, input().split())) order = [0 for i in range(n)] for after in range(n) : for before in range(after) : if l[after] > l[before] and order[after] < order[before] : order[after] = order[before] order[after] = order[after] + 1 m = max(order) print(m) lis = [] for i in range(n) : if order[n-1-i] == m : lis.append(l[n-1-i]) m = m - 1 for i in range(len(lis)) : print(li..