<?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>LIS on Kelly Dev</title><link>https://kelly-chui.github.io/tags/lis/</link><description>Recent content in LIS on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 03 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/lis/index.xml" rel="self" type="application/rss+xml"/><item><title>Algorithm. LIS(Subsequence)</title><link>https://kelly-chui.github.io/posts/cs-algorithm-lis-subsequence/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-algorithm-lis-subsequence/</guid><description>&lt;h2 id="소개"&gt;소개&lt;/h2&gt;
&lt;p&gt;수열의 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크면서, 가장 긴 길이를 가지는 부분 수열을 찾는 알고리즘&lt;/p&gt;
&lt;p&gt;DP 방식과 Binary Search를 쓰는 Greedy 방식 두 가지가 있으며, 별개의 방식이 아닌 두 방식이 밀접하게 연관되어 있다.&lt;/p&gt;
&lt;h2 id="아이디어"&gt;아이디어&lt;/h2&gt;
&lt;p&gt;LIS는 현재까지 구한 부분 수열의 결과를 이용해 더 긴 부분 수열을 만들어 나가는 문제이다.&lt;/p&gt;
&lt;p&gt;DP는 이전 계산 결과를 이용해 현재 상태를 구하며, Binary Search를 이용한 방식은 같은 아이디어를 유지하면서 탐색 과정을 최적화한 것이다.&lt;/p&gt;</description></item><item><title>BOJ 14003. 가장 긴 증가하는 부분 수열 5</title><link>https://kelly-chui.github.io/ps/2023/ps-boj-14003-longest-increasing-subsequence-5/</link><pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/ps/2023/ps-boj-14003-longest-increasing-subsequence-5/</guid><description>&lt;h2 id="문제"&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.acmicpc.net/problem/14003"&gt;https://www.acmicpc.net/problem/14003&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="풀이"&gt;풀이&lt;/h2&gt;
&lt;p&gt;LIS(Longest Increasing Subsequence)라고 하는 유명한 DP 문제이다. 이 문제 외에도 연계된 문제들이 많으니 1번(BOJ 11053)부터 차례대로 풀면 어느새 여기까지 풀게 된다.&lt;/p&gt;
&lt;img loading="lazy" src="https://kelly-chui.github.io/ps/2023/ps-boj-14003-longest-increasing-subsequence-5/image-002-optimized-image.webp"&gt;&lt;p&gt;이 문제들은 총 2가지 기준으로 분류된다. 첫 번째 기준은 O(n²), O(nlogn) 두 번째는 LIS 출력 여부이다. 이 중에 O(nlogn) 알고리즘을 사용하고 LIS를 직접 출력해야 하는 문제가 이 문제이다. 원래는 Swift로 작성하려 했지만, 백준의 입력시간 문제 때문에 Swift론 입력 횟수가 적은 O(n²)문제를 풀고 O(nlogn) 문제는 C++로 작성하였다.&lt;/p&gt;
&lt;p&gt;기본적인 알고리즘 콘셉트는 다음과 같다.&lt;/p&gt;</description></item></channel></rss>