Skip to content

hanXen/ps_archiver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ps_archiver

ps_archiver (Problem Solving Archiver)는 Programmers, LeetCode, Baekjoon 같은 플랫폼에서 코딩 문제 설명을 파싱하고 이를 마크다운 파일로 아카이빙하는 Python 도구입니다.

👉 한글 | English

📌 주요 기능

  • 지원 플랫폼:

  • 마크다운 생성:

    • URL을 입력받아 문제 description을 파싱하여 마크다운 파일로 저장
    • 깔끔하고 일관된 형식으로 생성되어 체계적인 학습 및 정리 가능
  • 아카이빙:

    • 문제 분류 및 저장 방법:
      • Programmers 문제는 난이도별로 분류
      • LeetCode 문제는 dynamic-programming 같은 태그별로 분류
      • Baekjoon 문제는 티어별로 분류 (Bronze, Silver, Gold 등)

🤔 누가 사용하면 좋을까요?

  • Problem-Solver: 문제 풀이를 체계적으로 기록하고 코딩 실력을 향상시키고 싶은 분들
  • 코딩 테스트 준비생: 코딩 면접이나 알고리즘 대회를 준비하며 연습 문제를 난이도나 카테고리별로 정리하고 싶은 분들
  • 보안에 민감한 사용자: GitHub 계정 정보 같은 민감한 정보를 브라우저 확장 프로그램에 저장하고 싶지 않은 분들

📦 설치 방법

🎯 (추천) uv

uv sync

pip

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 문제 분류 및 아카이빙

LeetCode 문제는 URL의 쿼리 문자열에 포함된 envId 값을 기반으로 문제를 분류합니다 (예: envId=dynamic-programming). 쿼리 문자열이 없거나 envId가 포함되지 않은 경우, 문제는 leetcode.com 디렉토리에 바로 저장됩니다.

‼️ Baekjoon 문제 분류 및 아카이빙

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() 함수에서 마크다운 출력 형식을 커스터마이징할 수 있습니다.
  • 구조, 헤딩, 추가 섹션 등을 필요에 따라 수정하세요.

🎯 학습 방법

  1. Programmers로 시작하기:

    • Programmers에서 난이도에 따라 문제를 풀며 알고리즘 및 자료 구조의 기초를 다지세요.
  2. Baekjoon으로 알고리즘 연습하기:

  3. LeetCode로 심화 학습하기:

    • LeetCode에서 특정 카테고리의 문제를 집중적으로 연습하세요.

📄 라이선스

MIT License

About

Archive coding problems as Markdown.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages