Skip to content

dj258255/codingtestkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

68 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CodingTestKit Icon

CodingTestKit

An all-in-one IntelliJ plugin to fetch, test, and submit algorithm problems โ€” all without leaving your IDE.
Programmers ยท SWEA ยท LeetCode ยท Codeforces

JetBrains Plugin

English ย |ย  ํ•œ๊ตญ์–ด


Fetch, Test & Submit

Random Problem ย  Settings

Timer ย  Template


English

Why?

Preparing for coding tests has always been cumbersome โ€” read the problem in a browser, write code in the IDE, switch back to the browser to submit, and repeat.

CodingTestKit was built to replicate the real exam environment inside your IDE:

  • Exam Mode: Disable autocomplete & inspections, block external paste, detect focus loss โ€” practice under real test conditions
  • Performance Metrics: Show execution time (ms) and memory usage per test case
  • Timer: Stopwatch, circular dial countdown timer, progress bar, digital clock โ€” plus an always-visible mini bar in the Problems tab and the IDE status bar
  • All-in-One: Fetch, code, test, and submit without leaving the IDE
  • Problem Translation: One-click Korean โ†” English translation with caching and rate limit protection
  • GitHub Push: Auto-push accepted solutions to GitHub

Supported Platforms

Platform Fetch Test Submit Search Random
Programmers O O O O O
SWEA O O O O O
LeetCode O O O O O
Codeforces O O O O O

Supported Languages

Language Programmers SWEA LeetCode Codeforces
Java O O O O
Python O O O O
C++ O O O O
Kotlin O X O O
JavaScript O X O O
Rust X X O O
Go O X O O
Ruby O X O O

X = submission not supported on that platform. Local test execution works for all languages (compiler/runtime must be installed: JDK, python3, g++, kotlinc, Node.js, rustc, go, ruby). Selecting an unsupported combination shows a warning next to the platform/language selectors immediately.


Features

Click any feature below to jump to the detailed section.

# Feature Description
1 Fetch Problems Fetch problem description & test cases from supported platforms
2 Problem View & Translation View problems in-IDE with one-click KRโ†”EN translation
3 Local Test Execution Run all test cases locally with execution time & memory metrics
4 Login & Submit Submit code directly via built-in browser with auto language selection
5 Problem Search Search problems on LeetCode, Codeforces, Programmers, and SWEA
6 Random Problem Picker Pick random problems with tier/difficulty/tag filters
7 My Solved List your solved problems on LeetCode & Codeforces
8 Code Editor Auto-generated boilerplate code per platform & language
9 Code Templates Save & reuse frequently used code snippets
10 Timer Stopwatch with laps + countdown with circular dial, progress bar, digital clock; mini bar in the Problems tab & status bar
11 Settings & Exam Mode One-click exam mode: block paste, disable autocomplete, focus alert
12 GitHub Integration Auto-push accepted solutions to GitHub
13 Internationalization Full Korean / English UI support

Fetch Problems

Select the platform and language, enter a problem number, and the problem description and test cases are automatically extracted.

  • Programmers: Number after /lessons/ in URL (e.g., 12947)
  • SWEA: Enter problem number or paste URL
  • LeetCode: Enter number, slug, or URL (e.g., 1, two-sum, full URL)
  • Codeforces: contestId+letter (e.g., 1234A) or URL

Codeforces: if Cloudflare blocks the request, fetching automatically falls back to the built-in JCEF browser (may take ~5โ€“20 seconds longer).

Fetch, Test & Submit

When a problem is fetched, a folder is automatically created with a code file and README.md (problem description).

Fetch Complete

Folder Structure

Back to Features


Problem View & Translation

Fetch Example

View the problem description, I/O format, and examples directly in the plugin panel.

Problem Translation (KR โ†” EN)

Translate problem descriptions between Korean and English with one click.

  • Toggle Translation: Click the Translate button to switch between original and translated text
  • Auto Language Detection: Automatically detects Korean/English and translates to the other language
  • Translation Caching: Translated results are cached โ€” no repeated API calls for the same problem
  • Rate Limit Protection: Built-in request throttling and exponential backoff retry to prevent IP blocking
  • Uses the same Google Translate unofficial API used by popular IntelliJ translation plugins (e.g., YiiGuxing Translation Plugin)

Problem View - Top Problem View - Examples

README Preview

Programmers problems are also displayed with I/O example tables.

Programmers Problem

Back to Features


Local Test Execution

Write your code and click Run All to execute all test cases and see PASS/FAIL results instantly. Each test case shows execution time (ms) and memory usage (KB/MB).

Test Cases List

All Pass

Failed cases are highlighted in red and auto-expanded.

Test Fail

Test Detail

Programmers and LeetCode solution functions are automatically wrapped for testing.

Programmers Test

Back to Features


Login & Submit

Log in to each platform via the built-in JCEF browser and submit your code directly. The language dropdown is automatically selected to match your code.

Fetch โ†’ Test โ†’ Submit

Click Submit, confirm the dialog, and your code & language are auto-filled.

Back to Features


Problem Search

LeetCode

  • Keyword Search: Search by title or keyword
  • Difficulty Filter: Filter by Easy, Medium, Hard
  • Tag Filter: Filter by algorithm tags (Array, DP, Graph, etc.)
  • Auto Search: Debounced auto-search while typing

Codeforces / Programmers / SWEA

Each platform supports keyword, tag, and difficulty search via its own dialog.

Back to Features


Random Problem Picker

Random Problem Picker

LeetCode

  • Difficulty Checkboxes: Select multiple difficulties (Easy, Medium, Hard)
  • Tag Chips: Select/remove tags as chips (Array, DP, Graph, etc.)
  • Accepted Filter: Exclude obscure problems by minimum accepted count (e.g., โ‰ฅ1000)
  • Solved Filter: All / Exclude my solved / Only my solved (uses LeetCode login session)
  • Count: Set number of problems to pick (1โ€“20)

Codeforces / Programmers / SWEA

Each platform supports rating/level range + tag-based random picking.

Back to Features


Code Editor

When a problem is fetched, boilerplate code is auto-generated so you can start coding immediately.

Code Editor

Back to Features


Code Templates

Save frequently used boilerplate as templates for quick access. Syntax-highlighted preview included.

Template Save & Load

Back to Features


Timer

Provides a Stopwatch and a Countdown Timer.

  • Stopwatch: Lap records with memo
  • Countdown: 3 display modes selectable via checkboxes
    • Circular Dial Timer: Remaining time shown as a red circle, elapsed time as a white gap growing clockwise
    • Digital Clock: Large numerical time display
    • Progress Bar: Linear progress indicator
  • Preset buttons for 30min, 1hr, 2hr, 3hr
  • Notification when time's up
  • Problems tab bottom bar: timer and stopwatch (start/pause/reset) with a thin remaining-time progress bar, always visible at the bottom of the Problems tab โ€” check the clock while reading the problem
  • Status bar: remaining time also appears next to CTK: ... in the IDE status bar, visible from any tab or layout

Timer

Back to Features


Settings & Exam Mode

  • Auto Complete ON/OFF: Toggle code auto-completion popups
  • Inspections ON/OFF: Enable power save mode to stop background analysis
  • Code Vision ON/OFF: Hide "N usages" and other Code Vision hints in the editor
  • Paste Block: Block pasting text copied from external programs
  • Focus Alert: Show alert when IDE window loses focus
  • Language: Switch between Korean / English

One-click Exam Mode enables all 5 restrictions; Normal Mode disables them all.

Settings

Back to Features


GitHub Integration

Push your accepted solutions to GitHub automatically.

  • One-Click Login: Log in to GitHub via built-in browser โ€” token is auto-generated and saved
  • Repo Selector: Choose from your repositories via dropdown after login
  • Auto Push: Automatically push code to GitHub when your submission is accepted
  • Manual Push: Click the GitHub button to push anytime
  • Smart Detection: Only pushes on "Accepted" โ€” wrong answers are never pushed
  • All Platforms: Works with Programmers, SWEA, LeetCode, and Codeforces
  • Structured Commits: [Platform #ID] Problem Title (Language) format with README

Setup: Settings > GitHub Integration > Click "GitHub Login" and select your repository.

Back to Features


Internationalization (i18n)

Switch between Korean / English in settings. All UI text is displayed in the selected language.

Back to Features


Installation

JetBrains Marketplace

  1. Install from Marketplace โ€” or open IntelliJ IDEA > Settings > Plugins > Marketplace
  2. Search "CodingTestKit" and install

Manual Install

  1. Download .zip from Releases
  2. IntelliJ IDEA > Settings > Plugins > โš™ > Install Plugin from Disk

Quick Start

  1. Open CodingTestKit from the left sidebar (docked alongside the Project view โ€” the two toggle; drag to another side if you prefer)
  2. Select platform and language
  3. Enter problem ID and click Fetch
  4. Write code, click Run All
  5. Click Submit, verify in built-in browser

Requirements

  • IntelliJ IDEA 2024.3+
  • JDK 17+ (for Java execution) โ€” building the plugin from source requires JDK 21
  • Language compilers (for respective language tests)

Windows + C++: install MinGW-w64 (or MSYS2), add its bin folder to PATH, then fully restart the IDE โ€” a running IDE does not pick up PATH changes (restart JetBrains Toolbox too if you use it).

Build

./gradlew buildPlugin

Feedback

Found a bug or have a feature idea? Please let us know:


ํ•œ๊ตญ์–ด

์™œ ๋งŒ๋“ค์—ˆ๋‚˜?

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ํ•ญ์ƒ ๋ถˆํŽธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ , IDE์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ๋‹ค์‹œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋Œ์•„๊ฐ€ ์ œ์ถœํ•˜๊ณ ... ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

CodingTestKit์€ ์‹ค์ œ ์‹œํ—˜ ํ™˜๊ฒฝ์„ IDE ์•ˆ์—์„œ ๊ทธ๋Œ€๋กœ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค:

  • ์‹œํ—˜ ๋ชจ๋“œ: ์ž๋™์™„์„ฑ๊ณผ ์ฝ”๋“œ ๊ฒ€์‚ฌ๋ฅผ ๋„๊ณ , ์™ธ๋ถ€ ๋ถ™์—ฌ๋„ฃ๊ธฐ ์ฐจ๋‹จ๊ณผ ํฌ์ปค์Šค ์ดํƒˆ ๊ฐ์ง€๊นŒ์ง€ ์‹ค์ „๊ณผ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์—ฐ์Šต
  • ์‹คํ–‰ ์‹œ๊ฐ„ & ๋ฉ”๋ชจ๋ฆฌ ์ธก์ •: ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณ„ ์‹คํ–‰ ์‹œ๊ฐ„(ms)๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰(KB/MB)์„ ํ‘œ์‹œ
  • ํƒ€์ด๋จธ: ์Šคํ†ฑ์›Œ์น˜, ์›ํ˜• ๋‹ค์ด์–ผ ์นด์šดํŠธ๋‹ค์šด ํƒ€์ด๋จธ, ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”, ๋””์ง€ํ„ธ ์‹œ๊ณ„ โ€” ๋ฌธ์ œ ํƒญ ํ•˜๋‹จ ๋ฏธ๋‹ˆ ๋ฐ”์™€ IDE ์ƒํƒœ๋ฐ”์—๋„ ํ•ญ์ƒ ํ‘œ์‹œ
  • ์˜ฌ์ธ์›: ๋ฌธ์ œ ์ฝ๊ธฐ, ์ฝ”๋“œ ์ž‘์„ฑ, ํ…Œ์ŠคํŠธ, ์ œ์ถœ๊นŒ์ง€ IDE๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์ „๋ถ€ ํ•ด๊ฒฐ
  • ๋ฌธ์ œ ๋ฒˆ์—ญ: ํ•œ ํด๋ฆญ์œผ๋กœ ํ•œ๊ตญ์–ด โ†” ์˜์–ด ๋ฒˆ์—ญ (์บ์‹ฑ ๋ฐ rate limit ๋ณดํ˜ธ ๋‚ด์žฅ)
  • GitHub ์—ฐ๋™: ์ฑ„์  ํ†ต๊ณผ ์‹œ ์ž๋™์œผ๋กœ GitHub์— ํ‘ธ์‹œ

์ง€์› ํ”Œ๋žซํผ

ํ”Œ๋žซํผ ๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ œ์ถœ ๊ฒ€์ƒ‰ ๋žœ๋ค
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค O O O O O
SWEA O O O O O
LeetCode O O O O O
Codeforces O O O O O

์ง€์› ์–ธ์–ด

์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SWEA LeetCode Codeforces
Java O O O O
Python O O O O
C++ O O O O
Kotlin O X O O
JavaScript O X O O
Rust X X O O
Go O X O O
Ruby O X O O

X = ํ•ด๋‹น ํ”Œ๋žซํผ ์ œ์ถœ ๋ฏธ์ง€์›. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰์€ ๋ชจ๋“  ์–ธ์–ด ์ง€์› (์ปดํŒŒ์ผ๋Ÿฌ/๋Ÿฐํƒ€์ž„ ์„ค์น˜ ํ•„์š”: JDK, python3, g++, kotlinc, Node.js, rustc, go, ruby). ์ œ์ถœ ๋ฏธ์ง€์› ์กฐํ•ฉ์„ ์„ ํƒํ•˜๋ฉด ํ”Œ๋žซํผ/์–ธ์–ด ์ฝค๋ณด ์˜†์— ์ฆ‰์‹œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


์ฃผ์š” ๊ธฐ๋Šฅ

์•„๋ž˜ ๊ธฐ๋Šฅ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

# ๊ธฐ๋Šฅ ์„ค๋ช…
1 ๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ง€์› ํ”Œ๋žซํผ์—์„œ ๋ฌธ์ œ ์„ค๋ช… & ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž๋™ ์ถ”์ถœ
2 ๋ฌธ์ œ ๋ณด๊ธฐ & ๋ฒˆ์—ญ IDE ๋‚ด์—์„œ ๋ฌธ์ œ ํ™•์ธ + ํ•œ/์˜ ์›ํด๋ฆญ ๋ฒˆ์—ญ
3 ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋กœ์ปฌ ์‹คํ–‰ + ์‹คํ–‰ ์‹œ๊ฐ„ & ๋ฉ”๋ชจ๋ฆฌ ์ธก์ •
4 ๋กœ๊ทธ์ธ & ์ œ์ถœ ๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ฝ”๋“œ ์ œ์ถœ + ์–ธ์–ด ์ž๋™ ์„ ํƒ
5 ๋ฌธ์ œ ๊ฒ€์ƒ‰ LeetCode, Codeforces, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, SWEA ๋ฌธ์ œ ๊ฒ€์ƒ‰
6 ๋žœ๋ค ๋ฌธ์ œ ๋ฝ‘๊ธฐ ํ‹ฐ์–ด/๋‚œ์ด๋„/ํƒœ๊ทธ ํ•„ํ„ฐ๋กœ ๋žœ๋ค ๋ฌธ์ œ ์ถ”์ฒœ
7 ๋‚ด ํ’€์ด LeetCode & Codeforces์—์„œ ๋‚ด๊ฐ€ ํ‘ผ ๋ฌธ์ œ ๋ชฉ๋ก ํ™•์ธ
8 ์ฝ”๋“œ ์—๋””ํ„ฐ ํ”Œ๋žซํผ & ์–ธ์–ด๋ณ„ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ
9 ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ์ €์žฅ & ์žฌ์‚ฌ์šฉ
10 ํƒ€์ด๋จธ ์Šคํ†ฑ์›Œ์น˜ + ์›ํ˜• ๋‹ค์ด์–ผ/ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”/๋””์ง€ํ„ธ ์‹œ๊ณ„ ์นด์šดํŠธ๋‹ค์šด, ๋ฌธ์ œ ํƒญ ํ•˜๋‹จ ๋ฏธ๋‹ˆ ๋ฐ” & ์ƒํƒœ๋ฐ” ํ‘œ์‹œ
11 ์„ค์ • & ์‹œํ—˜ ๋ชจ๋“œ ์›ํด๋ฆญ ์‹œํ—˜ ๋ชจ๋“œ: ๋ถ™์—ฌ๋„ฃ๊ธฐ ์ฐจ๋‹จ, ์ž๋™์™„์„ฑ ๋„๊ธฐ, ํฌ์ปค์Šค ๊ฐ์ง€
12 GitHub ์—ฐ๋™ ๋งž์€ ๋ฌธ์ œ ์ž๋™ GitHub ํ‘ธ์‹œ
13 ๋‹ค๊ตญ์–ด ์ง€์› ํ•œ๊ตญ์–ด / English UI ์™„์ „ ์ง€์›

๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ

ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ฌธ์ œ ๋ฒˆํ˜ธ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฌธ์ œ ์„ค๋ช…, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: URL์˜ /lessons/ ๋’ค ์ˆซ์ž (์˜ˆ: 12947)
  • SWEA: ๋ฌธ์ œ ๋ฒˆํ˜ธ ๋˜๋Š” URL ๋ถ™์—ฌ๋„ฃ๊ธฐ
  • LeetCode: ๋ฌธ์ œ ๋ฒˆํ˜ธ, slug, ๋˜๋Š” URL ์ž…๋ ฅ (์˜ˆ: 1, two-sum, URL)
  • Codeforces: ์ฝ˜ํ…Œ์ŠคํŠธ๋ฒˆํ˜ธ+๋ฌธ์ œ๋ฒˆํ˜ธ (์˜ˆ: 1234A) ๋˜๋Š” URL

Codeforces: Cloudflare๊ฐ€ ์š”์ฒญ์„ ์ฐจ๋‹จํ•˜๋ฉด ๋‚ด์žฅ JCEF ๋ธŒ๋ผ์šฐ์ €๋กœ ์ž๋™ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค (์•ฝ 5~20์ดˆ ๋” ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ).

๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ & ํ…Œ์ŠคํŠธ & ์ œ์ถœ

๋ฌธ์ œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ํ”„๋กœ์ ํŠธ ๋‚ด์— ํด๋”๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋˜๊ณ , ์ฝ”๋“œ ํŒŒ์ผ๊ณผ README.md(๋ฌธ์ œ ์„ค๋ช…)๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ ์™„๋ฃŒ

ํด๋” ๊ตฌ์กฐ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋ฌธ์ œ ๋ณด๊ธฐ & ๋ฒˆ์—ญ

๋ฌธ์ œ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ˆ์‹œ

ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒจ๋„์—์„œ ๋ฌธ์ œ ์„ค๋ช…, ์ž…์ถœ๋ ฅ ํ˜•์‹, ์˜ˆ์ œ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ๋ฒˆ์—ญ (ํ•œ โ†” ์˜)

๋ฌธ์ œ ์„ค๋ช…์„ ํ•œ๊ตญ์–ด โ†” ์˜์–ด๋กœ ํ•œ ํด๋ฆญ์— ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค.

  • ํ† ๊ธ€ ๋ฒˆ์—ญ: ๋ฒˆ์—ญ ๋ฒ„ํŠผ ํด๋ฆญ์œผ๋กœ ์›๋ฌธ/๋ฒˆ์—ญ ์ „ํ™˜
  • ์ž๋™ ์–ธ์–ด ๊ฐ์ง€: ํ•œ๊ตญ์–ด/์˜์–ด๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•˜์—ฌ ๋ฐ˜๋Œ€ ์–ธ์–ด๋กœ ๋ฒˆ์—ญ
  • ๋ฒˆ์—ญ ์บ์‹ฑ: ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•˜์—ฌ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋ฒˆ์—ญํ•˜์ง€ ์•Š์Œ
  • Rate Limit ๋ณดํ˜ธ: ์š”์ฒญ ๊ฐ„ ๋”œ๋ ˆ์ด ๋ฐ exponential backoff ์žฌ์‹œ๋„๋กœ IP ์ฐจ๋‹จ ๋ฐฉ์ง€
  • IntelliJ ๋ฒˆ์—ญ ํ”Œ๋Ÿฌ๊ทธ์ธ(YiiGuxing Translation Plugin ๋“ฑ)๊ณผ ๋™์ผํ•œ Google Translate ๋น„๊ณต์‹ API ์‚ฌ์šฉ

๋ฌธ์ œ ๋ณด๊ธฐ - ์ƒ๋‹จ ๋ฌธ์ œ ๋ณด๊ธฐ - ์˜ˆ์ œ

README ํ”„๋ฆฌ๋ทฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋„ ์ž…์ถœ๋ ฅ ์˜ˆ ํ…Œ์ด๋ธ”๊ณผ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋กœ์ปฌ ํ…Œ์ŠคํŠธ ์‹คํ–‰

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ „์ฒด ์‹คํ–‰์„ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์‹คํ–‰๋˜์–ด PASS/FAIL ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณ„๋กœ **์‹คํ–‰ ์‹œ๊ฐ„(ms)**๊ณผ **๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰(KB/MB)**์ด ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ชฉ๋ก

์ „์ฒด ํ†ต๊ณผ

FAIL์ธ ์ผ€์ด์Šค๋Š” ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์‹คํŒจ

ํ…Œ์ŠคํŠธ ์ƒ์„ธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์™€ LeetCode์˜ solution ํ•จ์ˆ˜๋„ ์ž๋™์œผ๋กœ ๋ž˜ํ•‘ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ…Œ์ŠคํŠธ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋กœ๊ทธ์ธ & ์ œ์ถœ

๋‚ด์žฅ JCEF ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ๊ฐ ํ”Œ๋žซํผ์— ๋กœ๊ทธ์ธํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์ถœ ์‹œ ์ฝ”๋“œ ์ž‘์„ฑ ์–ธ์–ด์— ๋งž์ถฐ ์–ธ์–ด ๋“œ๋กญ๋‹ค์šด์ด ์ž๋™ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ โ†’ ํ…Œ์ŠคํŠธ โ†’ ์ œ์ถœ

์ œ์ถœ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ œ์ถœ ํ™•์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ , ์ฝ”๋“œ์™€ ์–ธ์–ด๊ฐ€ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋ฌธ์ œ ๊ฒ€์ƒ‰

LeetCode

  • ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰: ๋ฌธ์ œ ์ œ๋ชฉ์ด๋‚˜ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰
  • ๋‚œ์ด๋„ ํ•„ํ„ฐ: Easy, Medium, Hard ํ•„ํ„ฐ๋ง
  • ํƒœ๊ทธ ํ•„ํ„ฐ: Array, DP, Graph ๋“ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒœ๊ทธ๋กœ ํ•„ํ„ฐ๋ง
  • ์ž๋™ ๊ฒ€์ƒ‰: ์ž…๋ ฅ ์‹œ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ (๋””๋ฐ”์šด์Šค ์ ์šฉ)

Codeforces / ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / SWEA

๊ฐ ํ”Œ๋žซํผ์˜ ๊ณต์‹ API ๋˜๋Š” ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ํ™œ์šฉํ•ด ํ‚ค์›Œ๋“œยทํƒœ๊ทธยท๋‚œ์ด๋„๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋žœ๋ค ๋ฌธ์ œ ๋ฝ‘๊ธฐ

๋žœ๋ค ๋ฌธ์ œ ๋ฝ‘๊ธฐ

LeetCode

  • ๋‚œ์ด๋„ ์ฒดํฌ๋ฐ•์Šค: Easy, Medium, Hard ์ค‘ ์›ํ•˜๋Š” ๋‚œ์ด๋„ ๋ณต์ˆ˜ ์„ ํƒ
  • ํƒœ๊ทธ ์นฉ ์„ ํƒ: Array, DP, Graph ๋“ฑ ํƒœ๊ทธ๋ฅผ ์นฉ์œผ๋กœ ์„ ํƒ/์ œ๊ฑฐ
  • ์ •๋‹ต์ž ์ˆ˜ ํ•„ํ„ฐ: ์ •๋‹ต์ž N๋ช… ์ด์ƒ์ธ ๋ฌธ์ œ๋งŒ ํ‘œ์‹œ (๋“ฃ๋ณด ๋ฌธ์ œ ์ œ์™ธ, ๊ธฐ๋ณธ 1000๋ช…)
  • ํ’€์ด ํ•„ํ„ฐ: ์ „์ฒด / ๋‚ด๊ฐ€ ํ‘ผ ๋ฌธ์ œ ์ œ์™ธ / ๋‚ด๊ฐ€ ํ‘ผ ๋ฌธ์ œ์—์„œ๋งŒ (LeetCode ๋กœ๊ทธ์ธ ์„ธ์…˜ ํ™œ์šฉ)
  • ๊ฐœ์ˆ˜ ์„ค์ •: ๋ฝ‘์„ ๋ฌธ์ œ ์ˆ˜ ์ง€์ • (1~20๊ฐœ)

Codeforces / ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / SWEA

๊ฐ ํ”Œ๋žซํผ๋ณ„ ๋ ˆ์ดํŒ…/๋ ˆ๋ฒจ ๋ฒ”์œ„์™€ ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๋žœ๋ค ๋ฝ‘๊ธฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


์ฝ”๋“œ ์—๋””ํ„ฐ

๋ฌธ์ œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๊ธฐ๋ณธ ์ฝ”๋“œ๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋˜์–ด ์—๋””ํ„ฐ์—์„œ ๋ฐ”๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์—๋””ํ„ฐ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ

์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ €์žฅํ•ด๋‘๋ฉด ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๊ฐ•์กฐ๊ฐ€ ์ ์šฉ๋œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ ์ €์žฅ & ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


ํƒ€์ด๋จธ

์Šคํ†ฑ์›Œ์น˜์™€ ์นด์šดํŠธ๋‹ค์šด ํƒ€์ด๋จธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์Šคํ†ฑ์›Œ์น˜: ๋žฉ ๊ธฐ๋ก๊ณผ ๋ฉ”๋ชจ ๊ธฐ๋Šฅ
  • ์นด์šดํŠธ๋‹ค์šด: 3๊ฐ€์ง€ ํ‘œ์‹œ ๋ชจ๋“œ๋ฅผ ์ฒดํฌ๋ฐ•์Šค๋กœ ์„ ํƒ ๊ฐ€๋Šฅ
    • ์›ํ˜• ๋‹ค์ด์–ผ ํƒ€์ด๋จธ: ๋‚จ์€ ์‹œ๊ฐ„์ด ๋นจ๊ฐ„ ์›์œผ๋กœ, ๊ฒฝ๊ณผ ์‹œ๊ฐ„์ด ๋นˆ ๊ฐญ์œผ๋กœ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ์ค„์–ด๋“ฆ
    • ๋””์ง€ํ„ธ ์‹œ๊ณ„: ํฐ ์ˆซ์ž๋กœ ๋‚จ์€ ์‹œ๊ฐ„ ํ‘œ์‹œ
    • ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”: ๋ง‰๋Œ€ํ˜• ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ
  • 30๋ถ„, 1์‹œ๊ฐ„, 2์‹œ๊ฐ„, 3์‹œ๊ฐ„ ํ”„๋ฆฌ์…‹ ๋ฒ„ํŠผ
  • ์‹œ๊ฐ„ ์ข…๋ฃŒ ์‹œ ์•Œ๋ฆผ
  • ๋ฌธ์ œ ํƒญ ํ•˜๋‹จ ๋ฐ”: ํƒ€์ด๋จธ์™€ ์Šคํ†ฑ์›Œ์น˜(์‹œ์ž‘/์ผ์‹œ์ •์ง€/์ดˆ๊ธฐํ™”), ๋‚จ์€ ์‹œ๊ฐ„ ํ”„๋กœ๊ทธ๋ ˆ์Šค ๋ฐ”๊ฐ€ ๋ฌธ์ œ ํƒญ ํ•˜๋‹จ์— ํ•ญ์ƒ ํ‘œ์‹œ โ€” ๋ฌธ์ œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ์‹œ๊ฐ„ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์ƒํƒœ๋ฐ” ํ‘œ์‹œ: IDE ํ•˜๋‹จ ์ƒํƒœ๋ฐ”์˜ CTK: ... ์˜†์—๋„ ๋‚จ์€ ์‹œ๊ฐ„์ด ํ‘œ์‹œ๋˜์–ด ์–ด๋–ค ํƒญยท๋ ˆ์ด์•„์›ƒ์—์„œ๋“  ๋ณด์ž„

ํƒ€์ด๋จธ

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


์„ค์ • & ์‹œํ—˜ ๋ชจ๋“œ

  • ์ž๋™์™„์„ฑ ON/OFF: ์ฝ”๋“œ ์ž๋™์™„์„ฑ ํŒ์—…์„ ๋„๊ณ  ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ์ฝ”๋“œ ๊ฒ€์‚ฌ ON/OFF: ์ ˆ์ „ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ถ„์„์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค
  • ์‚ฌ์šฉ ์œ„์น˜ ํžŒํŠธ ๋„๊ธฐ (Code Vision): ์—๋””ํ„ฐ์˜ 'N๊ฐœ ์‚ฌ์šฉ ์œ„์น˜' ๋“ฑ Code Vision ํžŒํŠธ๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค
  • ์™ธ๋ถ€ ๋ถ™์—ฌ๋„ฃ๊ธฐ ์ฐจ๋‹จ: ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณต์‚ฌํ•œ ํ…์ŠคํŠธ์˜ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค
  • ํฌ์ปค์Šค ์ดํƒˆ ๊ฐ์ง€: IDE ์ฐฝ์—์„œ ํฌ์ปค์Šค๊ฐ€ ๋ฒ—์–ด๋‚˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค
  • ์–ธ์–ด ์„ค์ •: ํ•œ๊ตญ์–ด / English ์ „ํ™˜ ๊ฐ€๋Šฅ

์‹œํ—˜ ๋ชจ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 5๊ฐ€์ง€ ์„ค์ •์ด ํ•œ ๋ฒˆ์— ์ ์šฉ๋˜๊ณ , ์ผ๋ฐ˜ ๋ชจ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋‘ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

์„ค์ •

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


GitHub ์—ฐ๋™

๋งž์€ ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ GitHub์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

  • ์›ํด๋ฆญ ๋กœ๊ทธ์ธ: ๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ €์—์„œ GitHub์— ๋กœ๊ทธ์ธํ•˜๋ฉด ํ† ํฐ์ด ์ž๋™ ์ƒ์„ฑ ๋ฐ ์ €์žฅ
  • ๋ ˆํฌ ์„ ํƒ: ๋กœ๊ทธ์ธ ํ›„ ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ ˆํฌ ์„ ํƒ
  • ์ž๋™ ํ‘ธ์‹œ: ์ฑ„์  ๊ฒฐ๊ณผ๊ฐ€ "๋งž์•˜์Šต๋‹ˆ๋‹ค"์ผ ๋•Œ๋งŒ ์ž๋™์œผ๋กœ GitHub์— ์ปค๋ฐ‹
  • ์ˆ˜๋™ ํ‘ธ์‹œ: GitHub ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์›ํ•  ๋•Œ ์ง์ ‘ ํ‘ธ์‹œ
  • ์Šค๋งˆํŠธ ๊ฐ์ง€: ํ‹€๋ฆฐ ์ฝ”๋“œ๋Š” ์ ˆ๋Œ€ ํ‘ธ์‹œํ•˜์ง€ ์•Š์Œ โ€” "Accepted"์ผ ๋•Œ๋งŒ ๋™์ž‘
  • ์ „ ํ”Œ๋žซํผ ์ง€์›: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, SWEA, LeetCode, Codeforces ๋ชจ๋‘ ์ง€์›
  • ๊ตฌ์กฐํ™”๋œ ์ปค๋ฐ‹: [ํ”Œ๋žซํผ #๋ฒˆํ˜ธ] ๋ฌธ์ œ ์ œ๋ชฉ (์–ธ์–ด) ํ˜•์‹ + README ์ž๋™ ์ƒ์„ฑ

์„ค์ •: ์„ค์ • > GitHub ์—ฐ๋™ > "GitHub ๋กœ๊ทธ์ธ" ํด๋ฆญ ํ›„ ๋ ˆํฌ ์„ ํƒ.

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


๋‹ค๊ตญ์–ด ์ง€์› (i18n)

์„ค์ •์—์„œ ํ•œ๊ตญ์–ด / English ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  UI ํ…์ŠคํŠธ๊ฐ€ ์„ ํƒํ•œ ์–ธ์–ด๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ


์„ค์น˜ ๋ฐฉ๋ฒ•

JetBrains Marketplace

  1. Marketplace์—์„œ ์„ค์น˜ โ€” ๋˜๋Š” IntelliJ IDEA > Settings > Plugins > Marketplace
  2. "CodingTestKit" ๊ฒ€์ƒ‰ ํ›„ ์„ค์น˜

์ˆ˜๋™ ์„ค์น˜

  1. Releases์—์„œ .zip ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
  2. IntelliJ IDEA > Settings > Plugins > ํ†ฑ๋‹ˆ๋ฐ”ํ€ด > Install Plugin from Disk

๋น ๋ฅธ ์‹œ์ž‘

  1. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œ CodingTestKit ์—ด๊ธฐ (ํ”„๋กœ์ ํŠธ ๋ทฐ์™€ ๊ฐ™์€ ์ž๋ฆฌ์—์„œ ํ† ๊ธ€๋˜๋ฉฐ, ์›ํ•˜๋ฉด ๋“œ๋ž˜๊ทธ๋กœ ๋‹ค๋ฅธ ์ชฝ์— ๋ฐฐ์น˜ ๊ฐ€๋Šฅ)
  2. ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด ์„ ํƒ
  3. ๋ฌธ์ œ ๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ ๊ฐ€์ ธ์˜ค๊ธฐ ํด๋ฆญ
  4. ์ฝ”๋“œ ์ž‘์„ฑ ํ›„ ์ „์ฒด ์‹คํ–‰ ํด๋ฆญ
  5. ์ œ์ถœ ๋ฒ„ํŠผ ํด๋ฆญ, ๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธ

์š”๊ตฌ ์‚ฌํ•ญ

  • IntelliJ IDEA 2024.3 ์ด์ƒ
  • JDK 17 ์ด์ƒ (Java ์‹คํ–‰์šฉ) โ€” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์†Œ์Šค์—์„œ ์ง์ ‘ ๋นŒ๋“œํ•˜๋ ค๋ฉด JDK 21 ํ•„์š”
  • ๊ฐ ์–ธ์–ด ์ปดํŒŒ์ผ๋Ÿฌ (ํ•ด๋‹น ์–ธ์–ด ํ…Œ์ŠคํŠธ ์‹œ)

Windows + C++: MinGW-w64(๋˜๋Š” MSYS2)๋ฅผ ์„ค์น˜ํ•˜๊ณ  bin ํด๋”๋ฅผ PATH์— ๋“ฑ๋กํ•œ ๋’ค IDE๋ฅผ ์™„์ „ํžˆ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š” โ€” ์‹คํ–‰ ์ค‘์ธ IDE์—๋Š” PATH ๋ณ€๊ฒฝ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (JetBrains Toolbox ์‚ฌ์šฉ ์‹œ Toolbox๋„ ์žฌ์‹œ์ž‘).

๋นŒ๋“œ

./gradlew buildPlugin

ํ”ผ๋“œ๋ฐฑ (๋ฒ„๊ทธ ์ œ๋ณด & ๊ธฐ๋Šฅ ์ œ์•ˆ)

์˜ค๋ฅ˜ยท๋ฒ„๊ทธยท์ƒˆ ๊ธฐ๋Šฅ ์ œ์•ˆ์ด ์žˆ์œผ์‹œ๋ฉด ์•„๋ž˜๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”:


License

MIT License โ€” dj258255 (GitHub)