Programmers Problem Helper
프로그래머스 코딩테스트 문제를 VS Code에서 더 편하게 풀기 위한 확장입니다.
이 확장은 OpenAI Codex를 사용해서 만들었습니다.
문제 번호를 입력하면 프로그래머스 문제 페이지를 가져와서 problem.md와 현재 설정 언어의 풀이 파일을 만들고, 왼쪽에는 문제 미리보기, 오른쪽에는 풀이 파일을 열어줍니다. 샘플 테스트와 직접 추가한 커스텀 테스트도 실행할 수 있습니다.
주요 기능
- 왼쪽 Activity Bar에
Programmers 사이드바 추가
Programmers/<문제번호>_<문제이름>/problem.md 생성
Programmers/<문제번호>_<문제이름>/solution.cpp, Solution.java 또는 solution.py 생성
- 예제 정보를 담은
.programmers-helper/programmers.json 생성
- 왼쪽에는
problem.md Markdown Preview 열기
- 오른쪽에는 현재 언어 풀이 파일 에디터 열기
- 문제의 입출력 예를 기반으로 샘플 테스트 실행
+ 테스트 추가로 Input / Expected Output을 직접 넣어 커스텀 테스트 실행
- 기본 단축키로 샘플 테스트 실행(
Ctrl+Alt+T)과 실행 중지(Ctrl+Alt+S) 지원
- 샘플 테스트 실행, 실행 중지, 커스텀 테스트 실행, 메모 열기는 VS Code 키보드 설정에서 원하는 키로 지정 가능
- PASS/FAIL 모두 expected / actual 출력
- 문제 목록에서
새풀이를 눌러 현재 언어 풀이 파일을 이전 풀이로 보관
풀이기록 필터에서 이전 풀이를 시간순으로 열거나 삭제
- 처음 받아온 풀이 원본을
.programmers-helper/initial/initial-solution.<ext>로 보관
- 현재 풀이 파일 코드를 클립보드에 복사하고 프로그래머스 웹 페이지 열기
- 문제별 풀이 타이머와 30/60/90/120분 목표 시간 표시
지원 언어
programmersHelper.language 설정에서 기본 언어를 선택할 수 있습니다.
- C++:
solution.cpp, .programmers-helper/initial/initial-solution.cpp, clang++ 또는 g++
- Java:
Solution.java, .programmers-helper/initial/initial-solution.java, javac / java
- Python:
solution.py, .programmers-helper/initial/initial-solution.py, python3
기존 문제를 다른 언어로 열면 해당 언어의 풀이 템플릿이 없을 때만 프로그래머스 페이지를 다시 가져와 언어별 초기 파일을 추가합니다. 문제 설명 problem.md는 덮어쓰지 않습니다.
테스트 실행은 현재 활성 풀이 파일을 우선합니다. 예를 들어 Java가 기본 언어여도 C++ 풀이 기록을 열어둔 상태에서 실행하면 C++ runner로 실행됩니다.
풀이기록은 현재 언어 기록을 먼저 보여주고, 다른 언어 기록은 접힌 섹션에서 확인할 수 있습니다.
필요 조건
- VS Code 1.85.0 이상
- Docker 실행 모드: Docker Desktop 또는 docker 엔진
- 로컬 실행 모드: 선택한 언어의 실행 명령
Docker 실행 모드에서는 테스트 실행 시 확장이 Docker 실행 컨테이너를 자동으로 준비하고, 그 안에서 현재 언어에 맞게 컴파일 또는 실행합니다.
docker version
로컬 실행 모드에서는 문제를 열 때 현재 언어의 명령어가 PATH에 있는지 확인합니다.
- C++:
clang++ 또는 g++
- Java:
javac, java
- Python:
python3
Windows 실행 안내
Windows에서는 Docker 실행 모드를 권장합니다. Docker 모드는 확장이 준비한 Linux 컨테이너 안에서 컴파일하므로 Windows C++ toolchain 차이를 덜 탑니다.
로컬 실행 모드를 사용하려면 MinGW g++ 또는 LLVM clang++처럼 -std=c++17, -Wall, -O2 형식의 옵션을 지원하는 컴파일러가 PATH에 있어야 합니다. Visual Studio의 cl.exe만 설치된 환경은 현재 로컬 실행 모드에서 지원하지 않습니다.
보안 안내
샘플/커스텀 테스트 실행은 현재 언어 풀이 파일을 컴파일 또는 실행합니다. Docker 실행 모드에서는 helper 컨테이너 안에서 실행되고, 로컬 실행 모드에서는 사용자 머신에서 직접 실행됩니다. 신뢰할 수 없는 코드는 실행하지 마세요.
개인정보 안내
이 확장은 사용자의 풀이 코드, 테스트 입력, 문제 기록을 별도 서버로 전송하지 않습니다. 문제 생성과 언어별 템플릿 갱신을 위해 사용자의 환경에서 프로그래머스 문제 페이지를 가져오며, 테스트 실행은 로컬 환경 또는 로컬 Docker 컨테이너에서 수행됩니다.
웹 버튼은 현재 풀이 파일 코드를 로컬 클립보드에 복사한 뒤 프로그래머스 문제 페이지를 엽니다. 사이트에 코드를 자동 제출하거나 입력하지 않습니다.
면책 안내
이 확장은 있는 그대로 제공되며 어떠한 보증도 제공하지 않습니다. 사용자 코드는 로컬 환경 또는 로컬 Docker 컨테이너에서 실행되며, 실행 결과, 프로그래머스 페이지 접근 가능 여부, 사용자 코드 실행으로 인한 영향에 대해 보장하지 않습니다. 사용자는 본인의 책임 하에 확장을 사용해야 합니다.
설치하기
방법 1: VS Code Marketplace에서 설치
VS Code의 Extensions 화면에서 Programmers Problem Helper를 검색해 설치합니다.
명령 팔레트 또는 터미널에서는 다음 명령으로 설치할 수 있습니다.
code --install-extension leokang123.programmers-problem-helper
Marketplace 설치본은 VS Code의 확장 업데이트 설정에 따라 자동으로 업데이트됩니다.
방법 2: GitHub Releases에서 VSIX 다운로드
GitHub 저장소의 Releases 페이지에서 최신 .vsix 파일을 다운로드합니다.
다운로드한 뒤 VS Code에서 설치합니다.
code --install-extension <다운로드한-vsix-파일>
그 다음 VS Code를 다시 불러옵니다.
- VS Code 실행
Developer: Reload Window 실행
- 왼쪽 Activity Bar에서
Programmers 아이콘 열기
방법 3: 저장소를 clone해서 연결
이 저장소를 clone합니다.
git clone https://github.com/leokang123/programmers-problem-helper.git
clone한 폴더를 VS Code 로컬 확장 폴더에 연결합니다.
macOS/Linux:
mkdir -p ~/.vscode/extensions
ln -s "$(pwd)/programmers-problem-helper" ~/.vscode/extensions/local.programmers-problem-helper
Windows PowerShell:
New-Item -ItemType Directory -Force "$HOME\.vscode\extensions"
New-Item -ItemType Junction "$HOME\.vscode\extensions\local.programmers-problem-helper" "$(Get-Location)\programmers-problem-helper"
그 다음 VS Code를 다시 불러옵니다.
- VS Code 실행
Developer: Reload Window 실행
- 왼쪽 Activity Bar에서
Programmers 아이콘 열기
업데이트
Marketplace 설치본은 VS Code가 일반 확장처럼 업데이트합니다.
GitHub Releases에서 설치한 경우 최신 .vsix를 다시 내려받아 설치합니다.
clone 연결 방식으로 설치한 경우 최신 코드를 받고 VS Code를 다시 불러오면 됩니다.
cd programmers-problem-helper
git pull
그 다음 Developer: Reload Window를 실행합니다.
직접 배포하기
새 GitHub 저장소를 만든 뒤, 이 확장 폴더를 저장소 루트로 push합니다.
cd vscode-programmers-helper
git init
git add .
git commit -m "Initial release"
git branch -M main
git remote add origin https://github.com/YOUR_GITHUB_ID/programmers-problem-helper.git
git push -u origin main
GitHub Release에 설치 파일을 올리고 싶다면 버전 태그를 push합니다.
git tag v0.1.0
git push origin v0.1.0
태그가 올라가면 GitHub Actions가 .vsix 파일을 만들고 Release에 첨부합니다.
사용 방법
- VS Code에서 문제 풀이용 작업 폴더를 엽니다.
- 왼쪽 Activity Bar의
Programmers 아이콘을 엽니다.
- 프로그래머스 문제 번호를 입력합니다.
문제 생성 및 열기를 누르거나 Enter를 입력합니다.
- 문제를 열면 현재 설정에 맞는 실행 환경이 준비됩니다. Docker 모드는 테스트 실행용 컨테이너를 확인하고, 로컬 모드는 선택 언어의 명령어를 확인합니다.
- 오른쪽 풀이 파일에 코드를 작성합니다.
샘플 테스트 실행 또는 커스텀 테스트 실행을 누릅니다. 샘플 테스트는 Ctrl+Alt+T로도 실행할 수 있습니다.
- 필요하면 현재 문제 버튼 아래의 타이머에서 목표 시간을 고르고
시작을 누릅니다. 문제를 전환하거나 VS Code를 닫으면 실행 중인 타이머는 저장 후 멈춥니다.
- 다시 풀 때는 문제 목록의
새풀이를 눌러 현재 풀이를 보관하고 새 풀이를 시작합니다.
- 보관된 코드는
풀이기록 필터에서 시간순으로 확인하거나 삭제합니다.
키보드 단축키
기본 단축키:
Ctrl+Alt+T: 샘플 테스트 실행
Ctrl+Alt+S: 실행 중지
아래 명령은 VS Code의 Keyboard Shortcuts 화면에서 원하는 키를 지정할 수 있습니다.
Programmers: Run Sample Tests
Programmers: Stop Tests
Programmers: Run Custom Tests
Programmers: Open Notes
커스텀 테스트의 Input은 solution(...) 인자 순서대로 씁니다.
예:
4, 5, 2, 2, [[0, 0], [3, 1]]
Expected Output:
[2, 2]
개발
문법 확인:
npm run check
VSIX 패키징 확인:
npm run package
Marketplace 배포는 publisher 계정이 준비된 뒤 실행합니다.
npx @vscode/vsce login leokang123
npx @vscode/vsce publish
GitHub Release와 Marketplace 배포는 v*.*.* 태그를 push하면 GitHub Actions가 .vsix를 만들고 Release에 첨부한 뒤 Marketplace에 publish합니다. 자동 Marketplace 배포에는 GitHub repository secret VSCE_PAT가 필요합니다.
Dev Container 개발
이 저장소에는 Dev Container 설정이 포함되어 있습니다.
- 컨테이너 안에서는 현재 워크스페이스를
~/.vscode-server/extensions/local.programmers-problem-helper로 자동 symlink합니다.
- 개발판은 Dev Container 안에서 확장을 개발하고, Docker 실행 모드에서는 호스트 Docker daemon에 붙는 별도의 sibling 실행 컨테이너가 컴파일 또는 실행을 담당합니다.
- 개발판 Dev Container에는
clang, lldb, 기본 JDK(javac, java), python3가 포함되어 있어 programmersHelper.executionMode를 local로 바꾸면 C++/Java/Python을 컨테이너 내부에서 바로 실행할 수 있습니다.
- 즉 개발판은 "개발용 Dev Container 1개 + 실행용 컨테이너 1개" 구조이며, 실행용 컨테이너를 Dev Container 내부에 중첩 생성하지 않습니다.
- 로컬 macOS VS Code에는 배포판
.vsix 또는 마켓 설치본을 그대로 사용하면 됩니다.
- 즉 개발용 확장은 컨테이너 쪽 VS Code Server에서만 보이고, 로컬 배포판과 분리됩니다.
사용 순서:
- VS Code에서 이 저장소를 엽니다.
Dev Containers: Reopen in Container를 실행합니다.
- Docker 기능이 포함된 설정을 반영하려면
Dev Containers: Rebuild Container를 한 번 실행합니다.
- 컨테이너가 올라오면
Developer: Reload Window를 한 번 실행합니다.
- 컨테이너 안에서 확장 코드를 수정하고 테스트합니다.
Run and Debug에서 Run Extension을 실행하면 개발용 Extension Host 창으로 바로 확인할 수 있습니다.
확인용 명령:
ls -l ~/.vscode-server/extensions/local.programmers-problem-helper
주의:
- 개발판은 문제 폴더를 현재 워크스페이스 아래
Programmers/에 저장합니다.
- 배포판은 문제 폴더를 확장의
globalStorage/Programmers에 저장합니다.
개발 편의:
package.json에 extensionKind: ["workspace"]를 지정해 이 확장이 원격/컨테이너 쪽에서 실행되도록 명시했습니다.
.vscode/launch.json의 Run Extension으로 개발용 확장 창을 바로 띄울 수 있습니다.
참고
테스트 러너는 프로그래머스 C++/Java/Python 함수형 문제에서 자주 쓰이는 타입을 지원합니다.
int
long long
string
bool
vector<int>
vector<string>
vector<vector<int>>
특수한 사용자 정의 타입이나 복잡한 시그니처는 추가 구현이 필요할 수 있습니다.
Python은 def solution(...): 형태를 감지하고, 샘플/커스텀 테스트 값은 Python literal에 맞춰 실행합니다.
Credits
This extension was built with OpenAI Codex.
English Summary
Programmers Problem Helper is a local VS Code extension for solving Programmers coding-test problems.
It creates problem.md, a language-specific solution file, and .programmers-helper/programmers.json from a Programmers lesson number, opens the problem preview beside the solution file, and runs sample or custom tests. C++, Java, and Python are supported through the programmersHelper.language setting.
This project was built with OpenAI Codex.