일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 딥러닝
- STL
- 모두를 위한 딥러닝
- 라인
- Python
- C++
- BFS
- dfs
- Spring Framework
- 벤쿠버
- 스타벅스
- leetcode
- 프로그래머스
- 라인플러스
- Java
- 백준
- 스프링 프레임워크
- 머신러닝
- 시애틀
- 다이나믹프로그래밍
- 알고리즘
- jvm
- binary search
- DP
- 파이썬
- C/C++
- 릿코드
- spring
- 프로그래밍언어론
- 백트래킹
Archives
- Today
- Total
케이스윔의 개발 블로그
[백준][DP] 11053번 가장 긴 증가하는 부분 수열 본문
문제
N개의 원소를 가지는 수열이 주어졌을 때 가장 긴 증가하는 부분 수열의 크기를 구하시오.
문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/11053)
풀이
DP를 통해 풀 수 있는 문제입니다. DP문제는 생각이나 구현면에서 다른 알고리즘에 비해 시간이 적게 걸린다는 장점이 있어서 요즘 공부를 하다가 집중이 안될 때 풀고 있는 중입니다! 풀이를 안적어도 될 정도로 간단한 문제들이 많지만 오랜만에 적어보겠습니다. 이 문제에서는 수열이 주어지고 가장 긴 증가하는 부분 수열을 구해야하기 때문에 두조건을 만족하는 경우 큰수가 dp배열에 저장될 수 있도록 했습니다. nums[i], dp[i] 라는 배열을 만들었고 nums에는 입력받은 값이 들어가있습니다. dp[i]의 값은 num[0~i-1] 중에서 num[i] 보다 작은 값이고, 그때의 dp[j]+1 이 가장 큰 값을 고르게 됩니다. 이렇게 되면 i번째가 되었을 때는 이전에 만들어놓은 수열 중 가장 긴 수열에 자신도 포함하여 +1을 해주게 되는 것입니다. 제목도 증가하는 수열인데 모르고 같은 값이 이어질 때도 수열로 만들어주어서 틀렸습니다를 받았었습니다.
코드
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[백준][DP] 2225번 합분해 (0) | 2018.12.12 |
---|---|
[백준][DP] 1010번 다리놓기 (0) | 2018.12.05 |
[백준][DP] 1890번 점프 (0) | 2018.11.18 |
[백준 알고리즘] 11060번 점프 점프 (0) | 2018.01.11 |
[백준 알고리즘] 2156번 포도주 시식 (0) | 2018.01.10 |
Comments