<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kadane's Algorithm on Kelly Dev</title><link>https://kelly-chui.github.io/tags/kadanes-algorithm/</link><description>Recent content in Kadane's Algorithm on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 25 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/kadanes-algorithm/index.xml" rel="self" type="application/rss+xml"/><item><title>Algorithm. Kadane's Algorithm</title><link>https://kelly-chui.github.io/posts/cs-algorithm-kadanes-algorithm/</link><pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-algorithm-kadanes-algorithm/</guid><description>&lt;h2 id="소개"&gt;소개&lt;/h2&gt;
&lt;p&gt;1차원 배열이 주어졌을 때, 연속된 구간의 최대 합을 구하는 알고리즘을 카데인 알고리즘이라고 한다.&lt;/p&gt;
&lt;p&gt;예를 들어 다음 배열이 있다면,&lt;/p&gt;
&lt;div class="code-theme-github"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[-2, 1, -3, 4, -1, 2, 1, -5, 4]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;연속된 구간 &lt;code&gt;[4, -1, 2, 1]&lt;/code&gt;의 합인 &lt;code&gt;6&lt;/code&gt;이 가장 크다.&lt;/p&gt;
&lt;p&gt;카데인 알고리즘은 앞에서 계산한 결과를 재활용하여 배열을 한 번만 순회한다. 따라서 시간 복잡도 &lt;code&gt;O(n)&lt;/code&gt;, 공간 복잡도 &lt;code&gt;O(1)&lt;/code&gt;로 문제를 해결할 수 있다.&lt;/p&gt;
&lt;h2 id="아이디어"&gt;아이디어&lt;/h2&gt;
&lt;p&gt;현재 원소에서 끝나는 연속 구간의 최대 합을 유지하고 다음 원소를 만났을 때 기존 구간을 이어가는 것과 현재 원소부터 새로운 구간을 시작하는 것 중 더 큰 값을 선택한다.&lt;/p&gt;</description></item></channel></rss>