Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스택
- 코딩테스트
- 리트코드
- 스프링 에러
- 인텔리제이 에러
- 백준 18222
- dfs
- 백준
- DP
- BFS
- 그래프 자바
- 코테
- 자바
- daily challenge
- leetcode 1721
- leetcode
- 백준 16935
- 프로그래머스
- Java
- 프로그래머스 java
- 자바 5464
- java leetcode
- java 프로그래머스
- 리트코드 1557
- 구현
- 분할정복
- 리트코드 자바
- 카카오
- 파이썬
- 자바 리트코드
Archives
- Today
- Total
레벨업 일지
[Java/Python3] leetcode 300. Longest Increasing Subsequence 본문
알고리즘/leetcode
[Java/Python3] leetcode 300. Longest Increasing Subsequence
24시간이모자란 2023. 1. 15. 18:20https://leetcode.com/problems/longest-increasing-subsequence/
문제
가장 최장으로 증가하는 부분 수열의 길이를 구하는 문제.
문제 조건에
- 1 <= nums.length <= 2500
- -104 <= nums[i] <= 104
으로 주어졌으니 2500 * 2500 = 6,250,000 으로 O(N^2) 으로 풀수있음을 알수 있다.
풀이
dp[] 배열을 하나 만든다. 이때 이배열의 원소 dp[i] 의 뜻은
dp[i] == i 번째 숫자가 배열의 마지막 원소일때, 그 배열의 가장 긴 부분 증가 수열 길이
이다. 우선 dp 배열의 모든 원소를 1로 초기화한 후
현재 위치 i 에서 , i 보다 왼쪽에 있는 원소들의 dp[j] 값들을 보고 nums[i] > nums[j] 이면(증가하면) 원소값들을 비교하고 업데이트 해준다.
참고
풀이 사진을 첨부한다. dp 배열 업데이트 과정을 시각화 하였으니 직접 그리기 귀찮으신 분들은 참고하시길.
코드
자바
class Solution {
public int lengthOfLIS(int[] nums) {
int[] dp = new int[nums.length];
Arrays.fill(dp, 1);
int len = nums.length;
int longest = dp[0];
for(int i =1 ;i < len ;i++){
for(int j =0 ; j< i; j++ ){
if(nums[j] < nums[i]){
dp[i] = Math.max(dp[i], dp[j]+1);
}
}
}
for(int x : dp)
longest = Math.max(longest, x);
return longest;
}
}
파이썬
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
dp = [1 for x in range(len(nums))]
for i in range(len(nums)):
for j in range(i):
dp[i] = max(dp[i], dp[j]+1) if nums[j] < nums[i] else dp[i]
ans = 1
for x in dp:
ans = max(ans,x)
return ans
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 93. Restore IP Addresses (0) | 2023.01.21 |
---|---|
[Java/Python3] leetcode 35. Search Insert Position (0) | 2023.01.15 |
[java/python3]leetcode 1838. Frequency of the Most Frequent Element (2) | 2023.01.11 |
[java/python3] leetcode 259. 3Sum Smaller (0) | 2023.01.10 |
[python3/파이썬/자바] leetcode 53. Maximum Subarray (0) | 2023.01.07 |
Comments