일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동시성
- guru
- function
- docker
- IMAGE
- 파이썬
- 백준
- Refactoring
- 알고리즘
- BlockChain
- Python
- dockerfile
- Fast API
- rust
- 플랫폼
- Kubernetes
- Network
- 이더리움
- RabbitMQ
- BAEKJOON
- 전문가를 위한 파이썬
- Container
- Ethereum
- Algorithm
- 블록체인
- 코어 이더리움 프로그래밍
- Thread
- 러스트
- fluent python
- AWS
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
11055_가장 큰 증가 부분 수열 본문
728x90
Concept & Idea
조건은 생각보다 간단하다.
우선 증가하는지 보면되고, dp배열에 여태까지 기록한 가장 큰 증가 부분 수열의 값을 저장해놓으면 된다.
가장 큰 증가 부분 수열을 찾으면, 그 값에 자기 자신을 더한 값을 DP[i]에 저장하면 된다.
Code
#include <iostream>
using namespace std;
int n;
int map[1001];
int dp[1001];
int res=0;
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>map[i];
}
for(int i=1; i<=n; i++) {
int min=0;
for(int j=0; j<i; j++) {
if(map[i]>map[j] && min<dp[j]){
min=dp[j];
}
}
dp[i]=map[i]+min;
if(res<dp[i])
res=dp[i];
}
cout<<res<<endl;
}
Fealing
뭔가.. 다이나믹 프로그래밍으로 꼭 풀어야한다고 하니까 코드에 손대기가 힘든 것 같다.
좀 더 복잡하게 생각하는 것 같기도하고..
규칙을 먼저 찾아보자!
728x90
'Algorithm > 2019~2020' 카테고리의 다른 글
1699_제곱수의 합 (0) | 2021.04.22 |
---|---|
1912_연속합 (0) | 2021.04.22 |
9465_스티커 (0) | 2021.04.22 |
2193_이친수 (0) | 2021.04.22 |
10942_팰린드롬? (0) | 2021.04.22 |
Comments