ps_archiver (Problem Solving Archiver)는 Programmers, LeetCode, Baekjoon 같은 플랫폼에서 코딩 문제 설명을 파싱하고 이를 마크다운 파일로 아카이빙하는 Python 도구입니다.
👉 한글 | English
-
지원 플랫폼:
- Programmers, LeetCode, Baekjoon 문제 파싱 지원
- 플랫폼별 디렉토리에 문제를 자동으로 분류 및 저장
-
마크다운 생성:
- URL을 입력받아 문제 description을 파싱하여 마크다운 파일로 저장
- 깔끔하고 일관된 형식으로 생성되어 체계적인 학습 및 정리 가능
-
아카이빙:
- 문제 분류 및 저장 방법:
- Programmers 문제는 난이도별로 분류
- LeetCode 문제는
dynamic-programming같은 태그별로 분류 - Baekjoon 문제는 티어별로 분류 (Bronze, Silver, Gold 등)
- 문제 분류 및 저장 방법:
- Problem-Solver: 문제 풀이를 체계적으로 기록하고 코딩 실력을 향상시키고 싶은 분들
- 코딩 테스트 준비생: 코딩 면접이나 알고리즘 대회를 준비하며 연습 문제를 난이도나 카테고리별로 정리하고 싶은 분들
- 보안에 민감한 사용자: GitHub 계정 정보 같은 민감한 정보를 브라우저 확장 프로그램에 저장하고 싶지 않은 분들
🎯 (추천) uv
uv syncpip
pip install -r requirements.txt명령어:
uv run main.py -u <problem_url># leetcode.com
uv run main.py -u "https://leetcode.com/problems/counting-bits/description/?envType=problem-list-v2&envId=dynamic-programming"
# programmers.co.kr
uv run main.py -u "https://school.programmers.co.kr/learn/courses/30/lessons/176962"
# acmicpc.net (Baekjoon)
uv run main.py -u "https://www.acmicpc.net/problem/1000"LeetCode 문제는 URL의 쿼리 문자열에 포함된
envId값을 기반으로 문제를 분류합니다 (예:envId=dynamic-programming). 쿼리 문자열이 없거나envId가 포함되지 않은 경우, 문제는leetcode.com디렉토리에 바로 저장됩니다.
Baekjoon (acmicpc.net)은 웹 스크래핑을 금지하고 있어 문제 내용은 가져오지 않습니다. 문제 제목과 티어는 solved.ac API를 통해 조회하며, 티어별로 분류됩니다 (Bronze, Silver, Gold 등).
위 예제 실행 결과, 파싱된 문제는 다음과 같이 저장됩니다:
archive/
├── leetcode.com/
│ └── dynamic-programming/
│ └── 338. Counting Bits/
│ └── README.md
│
├── programmers.co.kr/
│ └── LV.2/
│ └── 과제 진행하기/
│ └── README.md
│
└── acmicpc.net/
└── Bronze/
└── 1000번. A+B/
└── README.md
생성된 마크다운 파일의 기본 구조는 다음과 같습니다:
# [Problem Title]
## 문제
[Problem URL]
[Problem description converted to Markdown]
---
## Key Points
(Add your notes here)Baekjoon의 경우 정책에 따라 문제 내용을 가져오지 않습니다:
# 1000번. A+B
## 문제
https://www.acmicpc.net/problem/1000
---
## Key Points
(Add your notes here)utils.markdown_utils.py모듈의generate_markdown()함수에서 마크다운 출력 형식을 커스터마이징할 수 있습니다.- 구조, 헤딩, 추가 섹션 등을 필요에 따라 수정하세요.
-
Programmers로 시작하기:
- Programmers에서 난이도에 따라 문제를 풀며 알고리즘 및 자료 구조의 기초를 다지세요.
-
Baekjoon으로 알고리즘 연습하기:
- Baekjoon에서 다양한 알고리즘 유형의 문제를 티어별로 풀며 실력을 쌓으세요.
- 추천 강의: 바킹독의 실전 알고리즘 (Python 풀이)
-
LeetCode로 심화 학습하기:
- LeetCode에서 특정 카테고리의 문제를 집중적으로 연습하세요.