| name | algorithm-post-writing |
| description | 알고리즘 문제 풀이(BOJ) 글 작성 가이드. 표준화된 문제 정보, Mermaid 기반 로직 시각화, 복잡도 분석 표, 코너 케이스 체크리스트, 25개 이상 태그 작성 규칙을 포함한다. content/collection/Algorithm/ 하위 포스트 작성·보강 시 사용한다. |
알고리즘 문제 풀이 작성 가이드
content/collection/Algorithm/에 BOJ 등 알고리즘 문제 풀이 포스트를 작성할 때 따르는 제목·Front Matter·본문 구조·체크리스트다. blog-post-writing, collection-writing-standards와 함께 적용한다.
제목/메타 규칙 (필수)
- 카테고리 접두어:
[Algorithm] 사용
- 메인 제목:
[Algorithm] {언어} 백준 {번호}번: {문제명}
- 언어 표기: 단일 언어(
C++) 또는 다중 언어(C++ / Python) 병기 가능
- 총 길이: 70자 이내
날짜/버전 관리 (필수)
date, lastmod는 작성/수정 당일(로컬 타임존) 날짜 사용
- 폴더명 날짜와 Front Matter
date는 반드시 동일
- 의미 있는 풀이 개선이나 재채점 시
lastmod 갱신
폴더명 규칙 (필수)
YYYY-MM-DD-BOJ-문제번호-문제명-슬러그
예시:
2025-08-12-BOJ-31403-a-plus-b-minus-c-cpp-python-solution
2025-08-08-BOJ-1605-longest-repeated-substring
구성 요소:
- 날짜:
YYYY-MM-DD
- 식별자:
BOJ-{번호}
- 슬러그: 문제의 영문명 또는 핵심 키워드를 소문자 하이픈(
-)으로 연결. 구현 언어/기법을 명시하는 접미사(-cpp-solution, -cpp-python-solution 등)를 포함할 수 있다.
이미지 규칙 (워드클라우드)
- 워드클라우드 생성기는 각 글의
index.md 내용을 읽어 wordcloud.png 이미지를 생성한다.
- Front Matter에는
image: "wordcloud.png"로 고정 사용한다.
- 생성 방법: 프로젝트 루트에서 아래 명령 실행 (경로는 해당 콘텐츠 번들 폴더):
python script/wordcloud_generator.py "content/collection/Algorithm/2026/YYYY-MM-DD-BOJ-번호-슬러그"
- 실제 이미지 경로 예:
content/collection/Algorithm/2026/2026-03-10-BOJ-8927-squares-cpp-python-solution/wordcloud.png
Front Matter 템플릿
---
title: "[Algorithm] C++ / Python 백준 1234번: 문제 이름"
description: "핵심 알고리즘(예: 다익스트라, DP)을 이용한 O(N log N) 풀이입니다. 접근 방식, 정당성 증명, 메모리 최적화 기법 및 코너 케이스(예: N=1) 처리를 상세히 다룹니다."
date: {{ .Date }}
lastmod: {{ .Date }}
categories:
- Algorithm
- 주요알고리즘
tags:
- Algorithm
- 알고리즘
- BOJ
- 백준
- Problem-1234
- C++
- Python
- 주요알고리즘(영)
- 주요알고리즘(한)
- 세부기법(영)
- 세부기법(한)
- 자료구조(영)
- 자료구조(한)
- 시간복잡도
- Time Complexity
- 공간복잡도
- Space Complexity
- 최적화
- Optimization
- 구현
- Implementation
- 문제해결
- Problem Solving
- 코딩테스트
- Coding Test
- 엣지케이스
- Edge Case
image: "wordcloud.png"
---
본문 구조 가이드
도입부
문제의 핵심 유형(예: 그래프 탐색, 동적 계획법)과 난이도를 간단히 언급하고, 독자가 이 글을 통해 얻을 수 있는 핵심 인사이트(예: "메모리 초과를 피하는 비트마스킹 기법")를 1-2문장으로 소개한다.
문제 정보 요약
## 문제 정보
**문제 링크**: [https://www.acmicpc.net/problem/{번호}](https://www.acmicpc.net/problem/{번호})
**문제 요약**:
입력과 출력의 관계, 핵심 요구사항을 2-4 문장으로 명확하게 요약한다. 불필요한 배경 스토리는 배제하고 논리적 제약 조건 위주로 서술한다.
**제한 조건**:
- 시간 제한: X초 (추가 시간 여부)
- 메모리 제한: XXXMB
- 입력 크기: $1 \le N \le 100,000$
입출력 예제
## 입출력 예제
**입력 1**:
```text
(입력 데이터)
출력 1:
(출력 데이터)
(선택) 설명: 예제에 대한 간단한 해설이 필요한 경우 추가
### 접근 방식 및 로직 설계
문제를 해결하기 위해 발견해야 하는 수학적 성질이나 불변식(Invariant)을 먼저 문단으로 서술한다.
- 예: "이 문제는 최적 부분 구조를 가지므로 DP로 접근 가능하다."
- 예: "N이 작으므로 비트마스크를 이용한 완전 탐색이 가능하다."
이어서 Mermaid flowchart로 알고리즘 설계를 시각화한다 ([`rules-that-must-be-followed`](../rules-that-must-be-followed/SKILL.md) 문법 준수):
```mermaid
flowchart TD
A[시작: 입력 파싱] --> B{N의 크기 확인}
B -- N <= 1000 --> C[O(N^2) DP 수행]
B -- N > 1000 --> D[O(N log N) 그리디 수행]
C --> E[결과 저장]
D --> E
E --> F[출력]
이후 단계별 로직을 정리한다:
- 전처리: 데이터를 정렬하거나 초기화하는 과정
- 메인 로직: 상태 전이, 그래프 탐색, 쿼리 처리 등 핵심 과정
- 후처리: 최종 답안 도출 및 출력 형식 맞춤
복잡도 분석
## 복잡도 분석
| 항목 | 복잡도 | 비고 |
|---|---|---|
| **시간 복잡도** | $O(N \log N)$ | 정렬($N \log N$) + 스위핑($N$) |
| **공간 복잡도** | $O(N)$ | 입력 배열 및 DP 테이블 저장 |
구현 코드
가능한 경우 C++와 Python 코드를 모두 제공한다. 코드 최상단에 출처 주석(42jerrykim.github.io에서 더 많은 정보를 확인할 수 있다)을 포함한다.
## 구현 코드
### C++
```cpp
// 42jerrykim.github.io에서 더 많은 정보를 확인할 수 있다
#include <bits/stdc++.h>
using namespace std;
// 전역 변수 및 자료구조 정의
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// 입력 및 로직 구현
return 0;
}
Python (선택)
import sys
input = sys.stdin.readline
### 코너 케이스 및 실수 포인트
```markdown
## 코너 케이스 및 실수 포인트
| 케이스 | 설명 | 처리 방법 |
|---|---|---|
| **N=1** | 최소 입력 크기 | 반복문 범위 확인, 예외 처리 |
| **모든 값이 동일** | 엣지 케이스 | 로직이 올바른 값(0 또는 N)을 반환하는지 확인 |
| **오버플로우** | 답이 $2^{31}$ 초과 | `long long` (C++) 사용 |
| **비연결 그래프** | 그래프 문제 | 모든 컴포넌트 방문 여부 체크 |
마무리 (선택)
문제 풀이 후기, 더 최적화할 수 있는 여지, 혹은 유사한 문제 추천 등을 작성한다.
참고 문헌 및 출처
## 참고 문헌 및 출처
- [백준 {번호}번 문제](URL)
- [관련 알고리즘 이론 (위키백과 등)](URL)
작성 체크리스트