Skip to content

Latest commit

 

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithm

개인 알고리즘 풀이를 백업하기 위해 만들었습니다.

  1. 백준, 프로그래머스의 문제를 풀고, 지정된 형식의 파일명으로 저장해 push하면,
  2. GitHub Action이 동작해 자동으로 노션에 새 페이지를 만들고, 지정된 정보를 넣어줍니다.
스크린샷 2026-01-08 오후 1 31 04

📝 네이밍 규칙 (Naming Convention)

워크플로우가 파일을 정확히 인식하고 파싱할 수 있도록 아래의 명명 규칙을 준수합니다.

형식: {날짜}_{사이트}_{문제번호}.{확장자}

  • 백준 예시: 8_boj_10828.cpp
  • 프로그래머스 예시: 8_pg_12345.py

💡 프로젝트 동기 (Motivation)

알고리즘 문제를 풀고 난 뒤의 복습과 기록은 성장을 위해 필수적입니다.
하지만 매번 다음과 같은 반복적인 과정이 비효율적이라고 생각했습니다.

(해당 부분을 자동으로 채워줍니다.) 스크린샷 2026-01-08 오후 1 25 12

  1. 노션 데이터베이스에 새 페이지 생성
  2. 문제 제목, 번호, URL을 복사하여 붙여넣기
  3. 난이도와 알고리즘 유형을 수동으로 선택
  4. 사용한 언어와 날짜 기록

이러한 단순 반복적인 '정리' 업무에 쏟는 에너지를 최소화하고,
오직 '알고리즘 풀이와 회고'에만 집중할 수 있는 환경을 구축하고자
이 자동화 시스템을 시작하게 되었습니다.

본 시스템은 정형화된 데이터는 봇(Bot)이 관리하게 하고, 어려웠던 부분과 같은 주관적인 통찰은 직접 기록하도록 만들어 효율적인 학습 루틴을 지향합니다.

🚀 알고리즘 풀이 자동화 (Notion Sync)

GitHub Actions와 Notion API를 결합한 개인 학습(알고리즘 풀이) 아카이빙 시스템

본 프로젝트는 알고리즘 문제 풀이 과정에서 발생하는 반복적인 기록 업무를 자동화하여 학습 효율을 극대화하기 위해 설계되었습니다. 코드 푸시(Push) 한 번으로 데이터 수집, 가공, 그리고 노션 데이터베이스 적재까지 모든 파이프라인이 유기적으로 작동합니다.

🏗 시스템 설계 (Architecture)

  1. 로컬 작업: 문제 풀이 후 약속된 규칙에 따라 파일명 명명 후 푸시.
  2. 자동화 워크플로우: GitHub Actions가 트리거되어 독립적인 Python 가상 환경 실행.
  3. 데이터 가공: 파일명에서 문제 번호 및 언어를 추출하고, Solved.ac API를 통해 메타데이터 수집.
  4. 노션 동기화: 수집된 데이터를 노션 API 규격에 맞춰 변환 후 데이터베이스에 새 페이지 생성.

🛠 사용 기술 (Tech Stack)

  • 언어: Python 3.9+
  • 자동화: GitHub Actions (CI/CD)
  • 인터페이스: Notion API, Solved.ac API
  • 주요 라이브러리: notion-client, requests

📂 저장소 구조 (Project Structure)

.
├── .github/
│   └── workflows/
│       └── notion_sync.yml      # 자동화 워크플로우 설정 파일
├── scripts/
│   └── upload_to_notion.py      # 데이터 파싱 및 API 통신 핵심 로직
├── 2026/                        # 연도별 풀이 기록
│   └── 01_Feb/                  # 월별 폴더
│       └── 8_boj_10828.cpp      # 문제 소스 코드 (Naming Convention 적용)
└── README.md

⚙️ 주요 기능 (Key Features)

1. 플랫폼 및 언어 자동 인식

파일명의 접두사와 확장자를 분석하여 사이트별 메타데이터를 추출하고 환경을 구분합니다.

기능 백준 (BOJ) 프로그래머스 (PG)
식별자 boj_ 키워드 기반 인식 pg_ 키워드 기반 인식
데이터 수집 Solved.ac API 연동 (제목, 등급, 태그) 문제 번호 기반 URL 자동 생성
언어 감지 .cppC++17, .pyPython 등 확장자 매핑 동일 적용

2. 데이터 최적화 변환 (Data Transformation)

  • 등급 정규화: Solved.ac API가 제공하는 수치형 난이도 데이터를 사용자 정의 로마자 표기법(예: 실버 III)으로 변환하여 노션 Select 속성에 최적화된 데이터를 공급합니다.
  • 지능형 태그 동기화: 문제의 알고리즘 분류 태그를 추출하여 노션의 다중 선택(Multi-select) 속성과 실시간으로 동기화합니다.

3. 구조화된 문서 템플릿 자동 생성

단순 데이터 입력을 넘어, 사후 검토(Review) 및 오답 노트를 위한 5단계 학습 템플릿을 페이지 내부에 자동 구성합니다.

  • 01. 문제 설명: 문제의 핵심 요구사항 기술
  • 02. 필요 개념: 풀이에 사용된 알고리즘 및 자료구조 정리
  • 03. 핵심 코드: 로직의 핵심이 되는 코드 조각(Snippet)
  • 04. 코드 (풀이 방식): 전체 소스 코드 및 구현 로직 설명
  • 05. 어려웠던 부분: 트러블슈팅 및 개선 방향 기록 (학습 핵심 구간)

About

알고리즘 문제 풀이

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages