온라인 C++ 컴파일러 및 디버거

서버 모드 GDB에서 중단점, 변수 확인과 단계별 실행으로 C++를 디버깅하세요.

사전 설치 라이브러리
🚀 2,392,381 총 실행 (7 이번 달)
출력

C++ 코딩 챌린지로 연습하기

이 에디터에서 직접 문제를 풀고, 샘플 테스트 실행 및 제출, AI 코드 리뷰를 받아보세요.

모든 C++ 챌린지
쉬움

세 수의 평균

세 개의 정수를 평균하세요.

배우는 내용 산술나눗셈
BeginnerLearning-pathVariables
쉬움

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

배우는 내용 산술반환값
BeginnerLearning-pathVariables
보통

유전 알고리즘의 한 세대

토너먼트 선택, 단일점 교차, 돌연변이로 다음 세대의 비트 문자열을 만듭니다.

배우는 내용 유전 알고리즘진화적 탐색
OptimizationSimulationai
아직 풀이가 없습니다
쉬움

엡실론-그리디 멀티암드 밴딧

엡실론-그리디 행동 선택으로 멀티암드 밴딧에서 탐험과 활용의 균형을 맞춥니다.

배우는 내용 탐험과 활용밴딧
강화 학습ai머신 러닝
아직 풀이가 없습니다
쉬움

마르코프 체인 상태 분포

마르코프 체인의 전이 행렬을 통해 확률 분포를 정해진 단계만큼 전파합니다.

배우는 내용 마르코프 체인확률
Simulationaimath
아직 풀이가 없습니다
보통

가치 반복

벨만 최적 업데이트를 반복해 마르코프 결정 과정의 각 상태가 얼마나 가치 있는지 계산합니다.

배우는 내용 벨만 방정식MDP
강화 학습ai머신 러닝
아직 풀이가 없습니다
보통

Q-러닝 업데이트

경험의 흐름에 Q-러닝 업데이트를 적용하고 보상이 이전 상태로 거슬러 전달되는 모습을 확인합니다.

배우는 내용 Q-러닝할인된 보상
강화 학습ai머신 러닝
아직 풀이가 없습니다
보통

알파-베타 가지치기

알파-베타 가지치기를 적용한 미니맥스로 게임 트리를 평가하고, 실제로 확인한 리프 수를 셉니다.

배우는 내용 알파-베타 가지치기게임 탐색
RecursionTreesai
아직 풀이가 없습니다
보통

가중치 격자에서의 A* 탐색

게임과 로봇 경로 탐색의 핵심인 A*로 지형 비용 격자를 가로지르는 가장 저렴한 경로를 찾습니다.

배우는 내용 A* 탐색휴리스틱
GraphsGridsShortest-pathai
아직 풀이가 없습니다
보통

온도와 Top-K 샘플링

언어 모델처럼 다음 토큰을 고릅니다: 상위 k개 로짓을 남기고 온도를 적용한 뒤 샘플링합니다.

배우는 내용 텍스트 생성샘플링
ai머신 러닝
아직 풀이가 없습니다
어려움

멀티헤드 셀프 어텐션

입력을 쿼리, 키, 값으로 투영하고 여러 헤드에서 병렬로 어텐션을 실행한 뒤 결합합니다.

배우는 내용 멀티헤드 어텐션행렬 사영
ai머신 러닝
아직 풀이가 없습니다
보통

레이어 정규화

각 행을 평균 0, 분산 1로 정규화한 뒤 스케일과 이동을 적용합니다. 모든 트랜스포머 블록에서 쓰입니다.

배우는 내용 레이어 정규화트랜스포머
신경망ai머신 러닝
아직 풀이가 없습니다

주제별 탐색

실용 코드, 출력, 메모리 모델, 자료 구조, 알고리즘과 모던 C++를 통해 두 언어를 함께 학습하세요.

C/C++ 예제 →

💻 이 C++ 온라인 실행기 소개

CodeUtility C++ Executor는 브라우저에서 바로 C++ 코드를 작성하고 실행할 수 있게 해줍니다 — 설치나 컴파일러 설정이 전혀 필요 없습니다. 안전한 샌드박스에서 동작하며, C++11, C++14, C++17부터 최신 버전까지 실제 C++ 표준을 지원합니다.

이 도구는 클라우드에서 실제 C++ 컴파일러로 코드를 컴파일하고 실행하므로, 버전 간에 정확하고 일관된 동작을 보장합니다. 변수, 함수, 반복문, 조건문, 객체지향 프로그래밍 같은 핵심 C++ 개념을 자유롭게 실험해 보세요.

인터뷰 대비, 최신 C++ 기능 학습, 알고리즘 로직 검증 등 어떤 목적이든, CodeUtility C++ Executor는 어떤 기기에서든 즉시 코드를 실행할 수 있는 간단하면서도 강력한 환경을 제공합니다.

단순한 코드 실행기 그 이상

하나의 실행기에서 다중 파일 편집기, 격리된 실행 터미널, 런타임별 라이브러리, 영구 작업 공간, 공유 및 실시간 협업을 이용하세요.

이 실행기는 어떻게 사용하나요?

런타임을 선택하고 파일을 열거나 만든 다음 코드를 작성하고 실행을 선택하세요. 출력은 터미널에 표시되며, 로그인한 사용자는 작업 공간에 파일을 보관하고 라이브러리를 설치하며 공유를 통해 협업할 수 있습니다.

  1. 버전을 선택하고 현재 파일을 편집하거나 작업 공간의 다른 파일을 여세요.
  2. 코드를 실행하고 요청 시 터미널에 입력한 다음 저장된 실행 기록을 확인하세요.
  3. 작업에 둘 이상의 코드 조각이 필요하면 라이브러리, 작업 공간 도구, 공유 및 채팅을 사용하세요.

💡 위에서 바로 시도해볼 수 있는 C++ 기본기와 예제

1. 변수와 상수 선언

C++에서는 각 변수의 타입을 선언해야 합니다. 초기화 후 변경할 수 없는 읽기 전용 값을 정의하려면 const를 사용하세요.

int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;

// 상수
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// const 값을 변경하려 하면 컴파일 타임 오류가 발생합니다
// MAX_USERS = 200; // ❌ 오류

2. 조건문 (if / switch)

분기에는 if, else if, else를 사용합니다. 여러 값 분기에는 switch를 사용합니다.

int x = 2;
if (x == 1) {
    std::cout << "하나\n";
} else if (x == 2) {
    std::cout << "둘\n";
} else {
    std::cout << "기타\n";
}

// switch-case
switch (x) {
    case 1:
        std::cout << "하나\n";
        break;
    case 2:
        std::cout << "둘\n";
        break;
    default:
        std::cout << "기타\n";
}

3. 반복문

for, while, do-while로 코드 블록을 반복하세요.

for (int i = 0; i < 3; i++) {
    std::cout << i << "\n";
}

int n = 3;
while (n > 0) {
    std::cout << n << "\n";
    n--;
}

4. 배열

배열은 같은 타입의 여러 요소를 저장합니다.

int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";

5. 배열/벡터 다루기

동적 배열에는 std::vector를 사용하세요.

#include <vector>

std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();

for (int n : nums) {
    std::cout << n << " ";
}

6. 콘솔 입력/출력

std::cin은 입력, std::cout은 출력에 사용합니다.

std::string name;
std::cout << "이름을 입력하세요: ";
std::cin >> name;
std::cout << "안녕하세요, " << name << "\n";

7. 함수

함수는 재사용 가능한 로직을 묶습니다. 매개변수와 반환 타입을 사용하세요.

int add(int a, int b) {
    return a + b;
}

std::cout << add(3, 4);

8. 맵

std::map은 딕셔너리처럼 키-값 쌍을 저장합니다.

#include <map>

std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];

9. 예외 처리

try와 catch로 런타임 오류를 처리하세요.

try {
    throw std::runtime_error("오류가 발생했습니다");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. 파일 입출력

fstream으로 파일을 읽고 쓸 수 있습니다.

#include <fstream>

std::ofstream out("file.txt");
out << "안녕 파일";
out.close();

std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();

11. 문자열 다루기

C++ 문자열은 length(), substr(), find() 같은 메서드를 제공합니다.

std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");

12. 클래스와 객체

C++는 클래스를 사용한 객체지향 프로그래밍을 지원합니다.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "안녕하세요, 저는 " << name; }
};

Person p("Alice");
p.greet();

13. 포인터

포인터는 다른 변수의 메모리 주소를 저장합니다. 주소를 얻으려면 &를, 역참조(그 주소의 값을 접근)하려면 *를 사용합니다.

int x = 10;
int* ptr = &x;

std::cout << "x의 값: " << x << "\n";
std::cout << "x의 주소: " << ptr << "\n";
std::cout << "포인터로 읽은 값: " << *ptr << "\n";

// 포인터를 통해 x 수정
*ptr = 20;
std::cout << "변경된 x: " << x << "\n";

🐞 %{language} 코드를 온라인으로 디버깅하는 방법

온라인 %{language} 디버거로 컴파일러나 IDE를 설치하지 않고 런타임 및 논리 오류를 찾으세요. 서버 모드는 디버그 심볼로 컴파일하고 GDB에서 프로그램을 실행합니다.

  1. 줄 번호 옆에 중단점을 설정합니다.
  2. Debug를 선택해 컴파일하고 첫 중단점에서 멈춥니다.
  3. 현재 줄, 호출 스택과 변수를 확인합니다.
  4. Continue, Step Over, Step Into, Step Out으로 실행을 제어합니다.
  5. 종료하려면 Stop을 선택합니다.

재현 가능한 작은 예제로 시작하고 예상 밖의 동작 직전에 중단점을 설정하세요.