<?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>Python on Kelly Dev</title><link>https://kelly-chui.github.io/tags/python/</link><description>Recent content in Python on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 20 Jul 2026 22:18:49 +0900</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>TIL. Jul 20, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-20/</link><pubDate>Mon, 20 Jul 2026 22:18:49 +0900</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-20/</guid><description>&lt;h2 id="키워드"&gt;키워드&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;단조 스택&lt;/li&gt;
&lt;li&gt;Hugo Flat Post -&amp;gt; Page Bundle&lt;/li&gt;
&lt;li&gt;블로그 스크립트는 어떤 언어로?&lt;/li&gt;
&lt;li&gt;Xcode 프로젝트명 바꾸기&lt;/li&gt;
&lt;li&gt;SwiftUI Identity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="내용"&gt;내용&lt;/h2&gt;
&lt;h3 id="leetcode-1081-substring-subsequence-monotonic-stack"&gt;LeetCode 1081, Substring, Subsequence, Monotonic Stack&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://kelly-chui.github.io/ps/2026/ps-leetcode-1081-smallest-subsequence-of-distinct-characters/"&gt;LeetCode 1081&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS 문제를 풀면서, 처음에 Medium 문제인데 좀 해맸다, LCS 두 개를 하면서 Substring이랑 Subsequence 차이를 분명히 알았는데, Substring으로 생각하고 풀어서 스택을 써야 할 곳에 투 포인터를 썼다.&lt;/p&gt;
&lt;p&gt;단조 스택(Monotonic Stack) 문제인데, 사실 이런 스택이 있는지 오늘 처음 알았다. 그냥 스택은 스택으로 생각했으니까, 마치 Binary Search와 Parametric Search같은 느낌인가.&lt;/p&gt;</description></item><item><title>TIL. Jul 13, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-13/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-13/</guid><description>&lt;h2 id="키워드"&gt;키워드&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python 로컬 변수 스코프.&lt;/li&gt;
&lt;li&gt;Python에서 람다식 정리, Swift 인라인 클로저와 다른점.&lt;/li&gt;
&lt;li&gt;블로그 마이그레이션 하면서 이전에 썼던 iOS 관련 글 복습&lt;/li&gt;
&lt;li&gt;블로그에서 카테고리를 몇개를 해야하는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="내용"&gt;내용&lt;/h2&gt;
&lt;h3 id="python-로컬-변수-스코프-문제"&gt;Python 로컬 변수 스코프 문제&lt;/h3&gt;
&lt;p&gt;Leetcode 1291번 문제를 푸는 도중에 다음과 같이 코드를 작성했다. 로직에 오류가 있어서 통과는 못하는 코드다.&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-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sequentialDigits&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;low&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;seq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;dfs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;intSeq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;intSeq&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;seq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="c1"&gt;# 이부분&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;seq&lt;/code&gt; 변수가 &lt;code&gt;sequentialDigits&lt;/code&gt; 함수의 로컬 변수인데, &lt;code&gt;if&lt;/code&gt; 문 안의 &lt;code&gt;seq = []&lt;/code&gt; 부분 때문에 에러가 났다.&lt;/p&gt;</description></item><item><title>TIL. Jun 9, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-06-09/</link><pubDate>Tue, 09 Jun 2026 20:48:13 +0900</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-06-09/</guid><description>&lt;h2 id="오늘-한-내용"&gt;오늘 한 내용&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LeetCode 3689, 2574 풀이&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dev-data-server-light&lt;/code&gt;의 &lt;code&gt;AGENTS.md&lt;/code&gt; 구조 정리&lt;/li&gt;
&lt;li&gt;루트와 모듈별 개발 규칙의 중복 검토&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="배운-내용"&gt;배운 내용&lt;/h2&gt;
&lt;p&gt;새 디렉토리 구조에서는 공통 원칙을 루트 &lt;code&gt;AGENTS.md&lt;/code&gt;에 모으고, 모듈에만 해당하는 규칙은 해당 모듈의 문서에 두는 방향이 적절하다.&lt;/p&gt;
&lt;p&gt;루트에는 TypeScript, Express, Vitest 같은 기술과 전체 아키텍처, 테스트 원칙을 둔다. 반면 DB 모듈의 레코드 모델이나 저장소 구현 규칙처럼 다른 모듈이 알 필요 없는 내용은 DB 문서에 남긴다.&lt;/p&gt;
&lt;p&gt;중복된 규칙은 단순히 길이의 문제가 아니다. 같은 내용이 여러 파일에 있으면 나중에 한쪽만 수정될 수 있고, AI가 서로 다른 지침으로 해석할 가능성도 생긴다.&lt;/p&gt;</description></item></channel></rss>