프로그래머스 문제 페이지에서 실행 버튼을 누를 때마다 문제 설명, 현재 코드, 실행 결과를 자동으로 GitHub 저장소에 커밋하는 Chrome 확장 프로그램입니다.
위 링크에서 "Chrome에 추가"만 누르면 바로 사용할 수 있습니다.
최신 개발 버전을 미리 써보거나 코드를 직접 수정하고 싶다면:
chrome://extensions접속 → 우측 상단 "개발자 모드" 켜기- "압축해제된 확장 프로그램을 로드합니다" 클릭 → 이 저장소 폴더 선택
- GitHub에서 Fine-grained personal access token 발급
- 대상 저장소만 선택
- Repository permissions → Contents: Read and write 부여
- 확장 프로그램 아이콘 클릭 → "설정 열기"
- 토큰 / 저장소 owner / 저장소 이름 / 브랜치 입력 후 저장
- "연결 테스트"로 접근 가능한지 확인
-
프로그래머스 문제 페이지(
school.programmers.co.kr/learn/courses/*/lessons/*)에서 "코드 실행" 또는 "제출 후 채점하기" 버튼 클릭을 감지합니다. -
실행/제출이 끝날 때까지 기다린 뒤, 다음 정보를 모읍니다.
- 문제 번호 / 제목 / 난이도 (
data-lesson-*속성) - 분류: breadcrumb의 태그(예:
탐욕법(Greedy),완전탐색,연습문제,2025 카카오 하반기 2차) — 문제 목록 페이지에 보이는 태그와 동일합니다 - 문제 설명 (HTML → Markdown 변환)
- 에디터에 있는 현재 코드 (CodeMirror)
- 실행 결과 패널의 텍스트
- 문제 번호 / 제목 / 난이도 (
-
아래 경로의 파일들을 하나의 커밋으로 GitHub에 올립니다.
{분류}/index.json (분류 폴더 표시용, 내용 자체는 의미 없음) {분류}/[Lv{난이도}][{문제번호}] {제목}/README.md {분류}/[Lv{난이도}][{문제번호}] {제목}/solution.{확장자} index.json (문제별 상태를 추적하는 원본 데이터, 저장소 루트) README.md (저장소 루트, 전체 풀이 현황 요약)
같은 문제를 다시 실행해도 경로는 문제 번호 기준으로 고정되어 있어 폴더가 새로 생기지 않고,
기존 파일이 새 커밋으로 갱신됩니다. 저장소 루트 README.md는 저장소 루트 index.json을
바탕으로 매번 다시 생성되며, 문제별 통과/시도 상태와 난이도별 통계 표를 보여줍니다.
분류 폴더({분류}/)에는 index.json을 하나씩 만들어둡니다 — 문제 폴더가
하나뿐인 분류는 GitHub이 폴더 트리를 "분류/문제폴더" 한 줄로 압축해서 보여주는데, 파일을
하나 같이 두면 자식이 2개가 되어 이 압축 표시를 막을 수 있습니다. 이 파일 내용 자체는
{ "category": "{분류}" } 정도로, 실제로 쓰이진 않고 압축 방지 용도입니다.
기본값은 "제출 후 채점하기"만 커밋되고 "코드 실행"은 꺼져 있습니다. 팝업에서
"실행 시 커밋" / "제출 시 커밋" 토글을 각각 켜고 끌 수 있습니다. 둘 다 켜면 시행착오
과정 전체가 커밋 히스토리에 남습니다. 코드 자체를 고쳐서 트리거를 바꾸고 싶다면 content.js의
TRIGGER_BUTTONS 배열에서 원하지 않는 버튼 항목을 지우면 됩니다.
팝업(아이콘 클릭)에는 최근 실행 5건이 목록으로 표시되고(최대 30건 저장), 항목별 × 버튼이나 "모두 지우기"로 팝업에 보이는 기록만 지울 수 있습니다 — GitHub 저장소의 커밋 히스토리나 파일에는 영향 없습니다.
- 문제 설명 마크다운 변환은
p / code / pre / ul,ol / img / table / h1~h6정도만 지원하는 간단한 변환기입니다. 복잡한 서식은 원본과 다르게 보일 수 있습니다. - 실행 결과 패널(
.output-section)의 텍스트를 그대로 옮기므로, 테스트케이스별 통과/실패를 구조화된 데이터로 분리하지는 않습니다. - 실행/제출 버튼의 실제 라벨은 "코드 실행" / "제출 후 채점하기"입니다 (로그인 상태에서만
렌더링되는 버튼이라 처음엔 "실행"으로 잘못 짐작했던 부분). 프로그래머스가 문구를
바꾸면
content.js의findActionButton(...)인자도 실제 버튼 텍스트로 맞춰줘야 합니다. - GitHub 토큰은
chrome.storage.local에 평문으로 저장됩니다. 공용 PC에서는 사용을 권장하지 않습니다.
사용 전 반드시 확장 프로그램 설정 페이지 하단의 주의사항을 확인해주세요.
이 저장소는 PolyForm Strict License 1.0.0을 따릅니다. 누구나 소스코드를 열람·클론하고 개인적인 학습·실험 목적으로 실행해볼 수 있지만, 재배포하거나 이를 바탕으로 한 2차 저작물(포크 재배포, 코드 재사용 등)을 만드는 것은 허용되지 않습니다. 다른 용도로 쓰고 싶다면 저작권자에게 별도로 문의해주세요.