반응형
1. 문제
https://www.acmicpc.net/problem/11055
11055번: 가장 큰 증가 부분 수열
수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수
www.acmicpc.net
2. 풀이
LIS 전체 i와 j를 다 비교한다.
3. 구현
import sys
# sys.stdin=open('input.txt')
N = int(sys.stdin.readline())
lis = sys.stdin.readline().split()
tmp=[]
for item in lis:
tmp.append(int(item))
lis=tmp
mm = [x for x in lis]
for i in range(1, N):
for j in range(i):
if lis[i]>lis[j]:
mm[i]=max(mm[i],mm[j]+lis[i])
print(max(mm))
4. 테스트케이스 추가
5
50 40 30 20 10
답: 50
5
10 90 20 80 100
답: 210
1
1
답: 1
15
115 5 82 81 63 130 80 93 122 81 58 25 63 66 22
답: 363
20
97 112 16 129 25 87 15 75 85 65 117 143 133 83 59 30 111 24 70 128
답: 481
10
2 11 3 14 1 200 100 5 101 13
답: 228
반응형
'PS > 백준' 카테고리의 다른 글
[테스트케이스 추가] 백준 16434번: 드래곤 앤 던전 시간초과 해결 python, 파이썬 (0) | 2021.07.19 |
---|---|
[테스트케이스 추가] 백준 2343: 기타 레슨 python, 파이썬 (0) | 2021.07.19 |
[테스트케이스 추가] 백준 11051 번: 이항계수 2 python, 파이썬 (0) | 2021.07.19 |
백준 11057번: 오르막수 python, 파이썬 (0) | 2021.07.19 |
[테스트케이스 추가] 백준 10844 번: 쉬운 계산 수 python, 파이썬 (0) | 2021.07.19 |
댓글