TIL. Aug 7, 2026

오늘 한 내용 PS Codeforces 459B dev-data-server-light Auth 기능 추가 에이전트 설정 정리 블로그 클론 이후 Mermaid 재설치와 npm audit 확인 배운 내용 AI 에이전트 설정 문서의 역할 AGENTS.md, Rule, Workflow, Skill의 역할을 다시 정리했다. AGENTS.md: 프로젝트 구조, 아키텍처, 사용 기술처럼 항상 필요한 정보 Rule: 프로젝트 전반에서 지켜야 하는 규칙 Workflow: 반복 작업의 절차 Skill: 특정 분야의 지식과 작업 방법 모든 내용을 하나의 AGENTS.md에 넣기보다, 에이전트가 현재 작업에 필요한 컨텍스트만 읽을 수 있도록 성격과 범위에 따라 나누는 편이 낫다. ...

August 7, 2026

TIL. Aug 6, 2026

오늘 한 내용 LeetCode 3345 Codeforces 489C 블로그 스크립트 구조화, npm run 스크립트 정리 StackDay 프로젝트 도메인, 데이터 모델, 유즈케이스, MVP 범위 정리 Codex SKILL 공부 배운 내용 그리디 의심하기 Codeforces 489C를 DP로 한참 구현하다가, 뒤늦게 그리디로 해결되는 문제라는 걸 알게 되었다. PS에서는 완전탐색 → 그리디 → DP 순서로 가능성을 검토하는 습관이 중요한 것 같다. 그리디가 최적인 것을 증명하는 연습이 더 필요하다는 것을 느꼈다. 경험을 통한 직관으로… 정책 -> 도메인 -> 데이터 모델 -> 유즈케이스 순서로 사고하기 Day Stack을 한번 뒤엎어야 했던 어제의 실패를 반면교사 삼아서, 이번엔 실제 구현에 들어가기 전에 도메인과 정책부터 제대로 잡으려 했다. ...

August 6, 2026

TIL. Aug 5, 2026

오늘 한 내용 LeetCode 3310 Codeforces 451B Stack day 코드 뒤엎기 배운 내용 Swift BFS에서 조금 더 쉽게 큐 사용하기 Swift에서 BFS 문제를 풀 때, 대부분 함수로 분리하고, struct Queue { ... } 처럼 헤더 포인터 변수를 사용하는 유사 큐를 만들어서 썼다. struct Queue { //... } func bfs(start: Int) { //... } 오늘 LeetCode 3310번 문제를 풀면서, 방문 체크 배열을 외부에서도 확인해야 하는 문제여서 inout으로 넘기기 보다는, BFS 로직을 인라인으로 쓰는 방법을 했는데, 생각해보니 큐도 그냥 BFS 로직 안에 인라인으로 쓰면 되지 않나 라는 생각이 들었다. ...

August 5, 2026

TIL. Aug 4, 2026

오늘 한 내용 LeetCode 3731 Codeforces 580c 블로그 레이아웃, 숏코드, 콘텐츠, 스크립트, 기능 정리 ps Codeforces 580c가 그래프(트리)를 순회하는 문제였는데, 각 노드의 값이 0 혹은 1이라서 bool 타입 벡터를 사용하고 입력을 받으려 했다. vector<bool> a(n); for (bool& ai: a) { std::cin >> ai; } 아무런 이상이 없는 코드라고 생각했지만, 컴파일 에러가 생겼다. 이유를 조금 찾아보고 정리를 했는데 다음과 같다. bool 타입을 원소로 가지는 벡터는 다른 벡터들과 다르게 각 원소를 1비트 단위로 압축해서 저장한다. (ex: 1010101...) 압축되어 저장되었기 때문에(그냥 비트에 녹아버렸으니까) 다른 타입의 벡터와 서브스크립트 접근 방식이 달라야 한다. 이를 해결하기 위해서 프록시 객체가 존재한다. a[3] = true; -> a.operator[](3).operator=(true); 만약 bool&을 통해 레퍼런스를 뽑아내려 하면, 프록시 객체 자체가 리턴된다. 결론적으로 vector<bool>에선 위의 코드같은 문법을 못 쓴다… 위와 같은 경우가 아니더라도, 굳이 bool 타입 벡터를 쓸 필요도 없는게, 프록시 객체가 원소를 뽑아오는 것도 다른 벡터보다 더 많은 계산 시간이 필요하다. 그래서 그냥 int 벡터로 문제를 풀었다. ...

August 4, 2026

TIL. Aug 3, 2026

오늘 한 내용 LeetCode 1406 Stone Game III Codeforces 520B Two Buttons WWDC Meet async/await in Swift 세션 시청 및 정리. 배운 내용 PS LeetCode 1406은 현재 차례인 플레이어가 상대보다 확보할 수 있는 최대 점수 차이를 DP로 정의해 풀었다. 누가 Alice인지 Bob인지에 따라 상태를 나누지 않아도, 현재 상태를 점수 차이로 표현하면 같은 점화식으로 문제를 풀 수 있다. 점화식이 안떠올라서 힌트를 보고 풀었다. Codeforces 520B는 두 연산을 그래프의 간선으로 보고 BFS로 최단 거리를 구했다. 다만 목표값이 시작값보다 작을 때는 2배 연산이 도움이 되지 않으므로, 단순히 1씩 감소시키는 경우를 분리해 처리했다. ...

August 3, 2026

TIL. Jul 31, 2026

오늘 한 내용 LeetCode 3016, LeetCode 1979 풀이 Codeforces 455A 풀이 AGENTS.md, SKILL.md 관련 자료 학습 배운 내용 PS LeetCode 3016은 3014와 풀이가 동일했다. 문제의 제약 조건은 달랐지만, 3014를 풀 당시 더 큰 제약까지 고려해서 구현해 두었던 덕분에 그대로 통과할 수 있었다. 왜인지 3014가 Easy 문제치고는 생각보다 까다로운 편이었다. Codeforces 455A는 전형적인 DP 문제였다. 다만 C++에서는 정수 범위를 고려해 long long을 사용해야 하는데, Swift와 Python만 주로 사용하다 보니 이 부분을 자주 놓치는 것 같다. ...

July 31, 2026

TIL. Jul 30, 2026

오늘 한 내용 Codeforces 279B LeetCode 3014 과거 Bicubic, Smart CCTV 프로젝트 정리 미방문록 회의, AGENTS 수정. 배운 내용 SKILL 사용하기 프로젝트를 진행하면서 기본적인 개발 원칙은 AGENTS.md에 정리했다. 하지만 View, ViewModel, Test처럼 반복해서 만드는 코드까지 모두 AGENTS.md에 작성하는 것은 적절하지 않았다. 이런 작업은 프로젝트의 규칙이라기보다 반복 작업의 절차에 가깝기 때문이다. 예를 들어 View를 생성할 때는 ViewModel을 어떻게 주입할지, Preview를 어떻게 작성할지 등 항상 비슷한 패턴을 따른다. ViewModel이나 테스트 코드도 마찬가지다. ...

July 30, 2026

TIL. Jul 29, 2026

오늘 한 내용 LeetCode 3518: Smallest Palindromic Rearrangement II Codeforces 189A: Cut Ribbon 블로그 깃 훅 제거 블로그 스크립트 구조화 블로그 커밋 목록 정리 해결 내용 PS 두 문제를 푼 이후에, 블로그에서 스크립트와 깃 훅을 교체하고, 하루종일 깃과 씨름했다. Hugo 프로젝트의 커밋 로그가 너무 더러웠고, Squash, Rebase로 한 번 정리하려는데, 중간에 워킹 트리가 한번 꼬여버렸다. 블로그 깃 훅 일시 제거. 블로그 깃 훅에는 두 가지 문제가 있다. 첫 번째는 타이밍 문제다. pre-commit에 뭔가 내용을 수정하는 훅을 넣으면, 커밋이 멈추지 않고. 변경사항을 유지한채로 커밋되어버린다. ...

July 29, 2026

TIL. Jul 28, 2026

오늘 한 내용 Codeforces 230B. T-Primes Leetcode 3517. Smallest Palindromic Rearrangement I 배운 내용 C++ 배열 vs 벡터 Codeforces에서는 C++로만 코드를 작성하는데, 최근에는 벡터보다 C 스타일 배열을 선호했다. 그런데 오늘 T-Primes 문제를 풀면서 다시 벡터를 쓸까 고민했다. 가장 큰 이유는 보일러플레이트 때문이다. push_back 같은 벡터에서 편리한, 다른 언어에서는 당연히 있는 메소드가 배열에 없다. 결국 추가 코드를 작성하고 어느정도의 비효율이 생긴다. 그 외에도 배열은 함수에 넘길 때 크기를 같이 넘겨줘야 하는 번거로움이 있다. 글로벌 변수를 선호하지 않아서 레퍼런스를 파라미터로 와르르 넘기는 스타일을 쓰는데, 배열이면 크기도 같이 들고 다녀야 한다. ...

July 28, 2026

TIL. Jul 27, 2026

오늘 한 내용 Codeforces 4C. Registration System Codeforces 25A. IQ Test 각각 Hash Table과 구현 능력을 요구하는 PS 문제였다. IQ Test 부분이 구현이 살짝 번거로운 부분이 있었다. SwiftUI. SwiftUI Essentials WWDC 24에서 나온 SwiftUI Essentials 세션을 봤다. 24분 영상인데 정보 밀도가 엄청 높고 예제에서 보여준 것들도 많아서, 직접 예제를 돌리고 캡처하고, 동영상 녹화하고 하는데 꽤 시간이 들었다. 덕분에 블로그에 이미지 수평 배열, 이미지 캡션과 같은 숏 코드들도 추가했다. 배운 내용 SwiftUI Essentials WWDC 세션을 하나 봤다. 이번에는 SwiftUI의 기본 구조를 다시 정리하는 내용이었는데, 핵심은 View가 실제 UI 객체를 직접 만지는 대상이 아니라 선언형으로 UI를 설명하는 값이라는 점 이었다(Demystify SwiftUI도 마찬가지고 엄청나게 반복되는 내용이다.) ...

July 27, 2026