<?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>Hugo on Kelly Dev</title><link>https://kelly-chui.github.io/tags/hugo/</link><description>Recent content in Hugo on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 29 Jul 2026 20:53:29 +0900</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>TIL. Jul 29, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-29/</link><pubDate>Wed, 29 Jul 2026 20:53:29 +0900</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-29/</guid><description>&lt;h2 id="오늘-한-내용"&gt;오늘 한 내용&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kelly-chui.github.io/ps/2026/ps-leetcode-3518-smallest-palindromic-rearrangement-ii/"&gt;LeetCode 3518: Smallest Palindromic Rearrangement II&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kelly-chui.github.io/ps/2026/ps-codeforces-189a-cut-ribbon/"&gt;Codeforces 189A: Cut Ribbon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;블로그 깃 훅 제거&lt;/li&gt;
&lt;li&gt;블로그 스크립트 구조화&lt;/li&gt;
&lt;li&gt;블로그 커밋 목록 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="해결-내용"&gt;해결 내용&lt;/h2&gt;
&lt;p&gt;PS 두 문제를 푼 이후에, 블로그에서 스크립트와 깃 훅을 교체하고, 하루종일 깃과 씨름했다. Hugo 프로젝트의 커밋 로그가 너무 더러웠고, Squash, Rebase로 한 번 정리하려는데, 중간에 워킹 트리가 한번 꼬여버렸다.&lt;/p&gt;
&lt;h3 id="블로그-깃-훅-일시-제거"&gt;블로그 깃 훅 일시 제거.&lt;/h3&gt;
&lt;p&gt;블로그 깃 훅에는 두 가지 문제가 있다. 첫 번째는 타이밍 문제다. pre-commit에 뭔가 내용을 수정하는 훅을 넣으면, 커밋이 멈추지 않고. 변경사항을 유지한채로 커밋되어버린다.&lt;/p&gt;</description></item><item><title>TIL. Jul 21, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-21/</link><pubDate>Tue, 21 Jul 2026 23:59:22 +0900</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-21/</guid><description>&lt;h2 id="키워드"&gt;키워드&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Codeforces 가입&lt;/li&gt;
&lt;li&gt;로컬 LLM opencode에 연결하고 ACP로 Xcode에 연동하기&lt;/li&gt;
&lt;li&gt;SwiftUI WWDC 세션, 특히 View Value와 View Identity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="내용"&gt;내용&lt;/h2&gt;
&lt;h3 id="ps-풀기-codeforces-가입"&gt;PS 풀기, Codeforces 가입&lt;/h3&gt;
&lt;p&gt;LeetCode에서만 문제를 푸는게 조금 시야가 좁아지나 싶어서, Codeforces에 가입했다. Swift 지원이 없지만, PS 문제를 풀 때 특정 언어에 종속되지 않으려고 꾸준히 Swift, Python, C++를 돌아가면서 풀고 있으니 큰 문제는 없다.&lt;/p&gt;
&lt;p&gt;가장 풀이 수가 많은 문제 하나를 풀었다. 매일 LeetCode 오늘의 문제를 푸는 것이 루틴 중 하나인데, Codeforces, 삼성 SW Expert Academy 등 온라인 저지 사이트 여럿 돌아다니면서 풀어보려 한다. BOJ가 사라진 이후로 LeetCode 의존이 꽤 심해졌는데, 다양하게 풀어봐야겠다.&lt;/p&gt;</description></item><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. Jul 12, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-12/</link><pubDate>Sun, 12 Jul 2026 21:21:18 +0900</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-12/</guid><description>&lt;h2 id="오늘-한-내용"&gt;오늘 한 내용&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hugo 블로그에서 Mermaid를 외부 CDN 없이 렌더링하도록 변경&lt;/li&gt;
&lt;li&gt;Mermaid가 필요한 페이지에서만 스크립트를 로드하도록 최적화&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo --minify&lt;/code&gt;로 빌드 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="배운-내용"&gt;배운 내용&lt;/h2&gt;
&lt;p&gt;Mermaid 코드 블록은 &lt;code&gt;layouts/_markup/render-codeblock-mermaid.html&lt;/code&gt;에서 &lt;code&gt;&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;&lt;/code&gt;로 변환하고, &lt;code&gt;layouts/_partials/extend_footer.html&lt;/code&gt;에서 Mermaid가 포함된 페이지에만 스크립트를 삽입하도록 구성했다.&lt;/p&gt;
&lt;p&gt;처음에는 ESM 파일 하나만 &lt;code&gt;static/&lt;/code&gt;에 복사했지만, 해당 파일이 내부 chunk를 추가로 참조하는 구조라 렌더링이 깨졌다. 브라우저가 다이어그램을 SVG로 바꾸지 못하고 원문 텍스트처럼 보여서, 의존성이 단순한 &lt;code&gt;mermaid.min.js&lt;/code&gt;로 교체했다.&lt;/p&gt;
&lt;p&gt;외부 CDN을 제거하는 작업도 단순히 파일을 내려받는 것으로 끝나지 않았다. 번들 파일의 의존성과 실행 방식까지 확인해야 실제 정적 사이트에서 안정적으로 동작한다는 것을 배웠다.&lt;/p&gt;</description></item><item><title>TIL. Jul 2, 2026</title><link>https://kelly-chui.github.io/til/2026/til-2026-07-02/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/til/2026/til-2026-07-02/</guid><description>&lt;h1 id="요약"&gt;요약&lt;/h1&gt;
&lt;p&gt;오늘은 0-1 BFS를 문제에 적용해 보면서 알고리즘 선택의 중요성을 느꼈다. 또한 티스토리 블로그를 Hugo로 이전하기 위한 마이그레이션 스크립트를 작성하며 HTML을 Markdown으로 변환했다.&lt;/p&gt;
&lt;h2 id="배운-것"&gt;배운 것&lt;/h2&gt;
&lt;h3 id="0-1-bfs"&gt;0-1 BFS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;LeetCode 3286. Find a Safe Walk Through a Grid&lt;/li&gt;
&lt;li&gt;사용 언어: Python, Swift&lt;/li&gt;
&lt;li&gt;사용 알고리즘: Dijkstra, 0-1 BFS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;그동안은 거리 개념이 나오면 무조건 다익스트라를 사용했는데, 처음으로 0-1 BFS를 이용해서 문제를 풀었다. 같은 문제를 Python에서는 다익스트라로 풀었고. 0-1 BFS는 Swift로 풀었다.&lt;br&gt;
기존에 Swift에서 BFS를 사용할 때는 배열과 인덱스 포인터를 이용한 유사 Queue를 사용했는데, 이 방식으로는 큐의 헤드에 원소를 push하는 메소드를 구현하기 어려워서 배열을 사용했다. 문제의 제약조건이 널널해서 배열로 충분히 통과했는데, 어떻게 해야할지는 고민해봐야 할 것 같다. Linked List를 이용해서 큐를 만들면 되지만, 이게 힙와 다익스트라를 쓰는 것보다 코드를 작성하는 입장에서 효율적일지는 잘 모르겠다.&lt;/p&gt;</description></item></channel></rss>