[BOJ] [Python] 1935번 : 후위 표기식2
전형적인 스택 문제가 아닐까? ABC*+DE/-을 예로 살펴보자. 앞에서부터 하나씩 값을 넣다가, 연산자가 들어오면 연산을 한다. [1, 2, 3] [1, 6] [7] [7, 4, 5] [7, 0.8] [6.2] pop을 이용해서 2개의 원소를 뽑고, push[append]를 이용해서 연산 결과를 넣어준다. num = int(input()) string = input() check = ["*", "+", "/", "-"] dic = {} li = [] for s in string: if s in check: first = li.pop() second = li.pop() if s == "+": li.append(second + first) elif s == "-": li.append(second - fir..
[BOJ] [Python] 11055번 : 가장 큰 증가 부분 수열
[1, 100, 2, 50, 60, 3, 5, 6, 7, 8]를 예로 이해하고 해결해보자. dp에는 자기 자신의 값이 초깃값으로 들어가 있다. 이제 0번째부터 9번째까지 하나씩 확인하며, dp를 늘려줄 것이다. 규칙은 아래와 같다. n번째) 0번째부터 n-1번째까지 돌면서, 1. n번째 수보다 작은 값을 찾는다. 2. 작은 값들이 가진 dp중 최대의 dp를 n번째 dp에 더해준다. 예를 들어, 지금 4번째라고 한다면 50보다 작은 값은 1과 2이다. 1보다 2의 dp값이 더 크므로, 2의 dp값에 50을 더해준다. 더해진 값은 50의 dp값이 된다. 마지막에 dp 리스트의 최댓값을 출력하면, 가장 큰 증가 부분 수열의 합을 찾을 수 있다. num = int(input()) li = list(map(int..