- 오늘의 학습 키워드 동적 계획법
- 공부한 내용 본인의 언어로 정리하기
동적 계획법 dynamic programming 이전 계산 결과를 저장하고 활용하여 중복 계산을 피한다.
Kadane's 알고리즘
1. 선택지
1-1.각 위치에서 현재 원소부터 새로운 배열 시작하기 or
1-2.이전 부분 배열에 현재 원수 추가하기
2. 각 단계에서 지금까지의 최대합을 기록
수도코드
function maxSubArray(nums):
현재까지의 최대 합 = nums[0]
전체 최대 합 = nums[0]
for i = 1 to nums.length-1:
현재까지의 최대 합 = max(nums[i], 현재까지의 최대 합 + nums[i])
전체 최대 합 = max(전체 최대 합, 현재까지의 최대 합)
return 전체 최대 합
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
다이나믹 프로그래밍 이전 계산 결과를 저장하고 활용하여 중복계산을 피한다는 기억함, 적용 x
- 어떻게 해결했는지
각 위치에서 두가지 선택하는 것을 비교
현재 원소만 선택하여 새로운 부분 배열 시작 nums[i]
이전 부분 배열에 현재 원소 추가 currentSum + nums[i] 중에서 더 큰값을 currentSum으로 갱신
maxSum은 최대 부분 배열합을 추적
- 무엇을 새롭게 알았는지
kandane's 알고리즘
음수의 합이 누적된 부분 배열은 버린다. 현재 합이 음수이면 새로운 원소부터 다시시작하게한다.
- 내일 학습할 것은 무엇인지
'【스터디노트】 > ▷TIL' 카테고리의 다른 글
코테 스터디 32일차 TIL + 오늘의 학습 키워드 BFS (0) | 2025.05.22 |
---|---|
코테 스터디 31일차 TIL + 오늘의 학습 키워드 선형탐색 (0) | 2025.05.21 |
코테 스터디 29일차 TIL + 오늘의 학습 키워드 linkedList (0) | 2025.05.14 |
코테 스터디 28일차 TIL + 오늘의 학습 키워드 hashtable (0) | 2025.05.12 |
코테 스터디 27일차 TIL + 오늘의 학습 키워드 다이나믹 프로그래밍 (0) | 2025.05.09 |