Code Kata; C++ 발제; 따라치기 세션; C++강의 듣기; C++Text RPG
Code Kata
013. 자릿수 더하기 | Solved Date: 2026-04-28-Tue | Problem Link
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
문제 풀이
// solution.cpp
#include <iostream>
using namespace std;
int solution(int n)
{
int sum = 0;
//n %= 10; // 1의 자리 (첫 수의 자리) 만 구하기
//n /= 10; // 1의 자리수 없애기
while (n > 0) // 0 일 때는 안 더해도 되니깐
{
sum += (n % 10);
n /= 10;
}
//cout << sum << endl;
return answer;
}
Key Points:
- n%= 10; // 1의 자리 (첫 수의 자리) 만 구하기
- n /= 10; // 1의 자리수 없애기
Commnets:
- 이건 생각을 못했다. 다시 풀어보자.
C++ 발제 (CH2 OT)
- 본격적으로 프로그래밍 언어인 C++을 배우며 Unreal 엔진을 더 잘 다루기 위한 준비 단계
- 블루프린트만으로도 게임 개발이 가능하지만, 프로젝트 규모가 커질수록 노드가 복잡하게 얽히는 이른바 '스파게티 노드' 문제가 발생하고, 디버깅도 점점 어려워짐. 또한 블루프린트는 성능 면에서 한계가 있어, 게임 개발에서 무엇보다 중요한 최적화에 불리할 수 있다.
- 반면 C++로 개발하면 훨씬 뛰어난 성능을 확보할 수 있고, 기존 노드의 기능에 의존해야 하는 블루프린트와 달리 원하는 기능을 자유롭게 직접 구현할 수 있다.
학습 목적
- C++ 개발 환경 설정부터 시작하여, 기초 문법을 학습하고 다양한 예제를 직접 구현하며 응용합니다.
학습 목표
- C++의 기본 문법 구조를 이해합니다.(자료형, 변수, 연산자, 조건문, 반복문 등)
- 함수의 개념과 사용법을 익히고, 프로그램을 구조적으로 설계합니다.
- 배열과 포인터의 개념을 이해하고 메모리 동작 원리를 학습합니다.
- 클래스와 객체 개념을 이해하고 객체지향 프로그래밍(OOP)의 기초를 익힙니다.
- 입출력 처리 및 간단한 콘솔 기반 프로그램을 구현합니다.
학습 이후
- C++ 문법을 기반으로 간단한 프로그램을 스스로 설계하고 구현할 수 있습니다.
- 객체지향 개념을 활용하여 구조화된 코드를 작성할 수 있습니다.
- 이후 Unreal 엔진또는 자료구조/알고리즘 학습으로 확장할 수 있는 기초 체력을 갖추게 됩니다.
과제
과제가 두개가 있음
- Unreal Engine C++ 활용 프로그램 제작
- C++ Text RPG
따라치기 세션
1번 과제로 나온 ‘Unreal Engine C++ 활용 프로그램 제작’ 을 강사님 따라서 하면 되는 거.
!!! 문제발생: 공지 잘못 이해해서 그냥 VS Studio 없는 사람 설치하라고 한줄 알았음
- 사실: ‘VS Studio 2022’ 가 없는 사람은 설치해야 한다는 거였음… 난 2026 있어서 안했었는데 현시점 UE5 는 VS Studio 2022 만 공식으로 사용된다니…
- 이거 설치하느라 강의때 아무것도 못들음
- 근데 지금 이걸 올리는 중인 저녁 23:26 분 까지도 녹화본이 안올라와서 우선 내일 해야겠다…
내가 한거
- Visual Studio 2022 설치
- Rider 설치 및 중요 Plugin 들 설치
- Unreal Engine 5에 Rider 연결
- Actor 생성 및 C++로 로그 찍는 거
(Rider에 Vim Plugin 도 있어서 설치후 만져봤는데 이번주 주말이나 아에 나중에 만져봐야 할듯, 결국 우선은 Disable 해둔 상태)
C++강의 듣기
- 배열은 통째로 복사 및 대입이 되지 않습니다. (복사하려면 각각 복사해야함)
- pointer* , & (주소), 배열은 주소값이다
- 배열
- 배열은 통째로 복사 및 대입이 되지 않습니다.
- 배열의 각 원소는 변수와 동일하므로 cin과 cout을 통해 입출력이 가능합니다.
- 배열은 주소를 나타내기 때문에 포인터 인자값에 전달할때, ‘&’ 없이 그냥 변수 이름만 보내면 됨.
- 함수
- 코드스니펫] 함수 호출시 값의 변화 확인 (주소 전달-변수)
-
#include <iostream> using namespace std; // 함수: 포인터를 사용한 값 변경 void modifyValue(int* ptr) { *ptr = 100; // 포인터가 가리키는 변수의 값을 변경 } int main() { int num = 50; modifyValue(&num); // num의 주소 전달 cout << "포인터 전달 후 num: " << num << endl; // 출력: 포인터 전달 후 num: 100 return 0; } - [코드스니펫] 함수 호출시 값의 변화 확인 (주소 전달-배열)
-
#include <iostream> using namespace std; // 함수: 포인터를 사용한 값 변경 void modeifyArr(char* ptr) { ptr[0] = 'X'; // 포인터가 가리키는 변수의 값을 변경 } int main() { char str[4] = {'A', 'B', 'C', 'D'}; modeifyArr(str); // num의 주소 전달 cout << "포인터 전달 후 str[0] = " << str[0] << endl; // 출력: 포인터 전달 후 str[0] = X return 0; } - [코드스니펫] 함수 호출시 값의 변화 확인 (참조자 사용)
-
#include <iostream> using namespace std; // 함수: 참조를 사용한 값 변경 void modifyValueByReference(int& x) { x = 200; // 참조를 사용하여 원본 값 변경 } int main() { int num = 50; modifyValueByReference(num); // 참조 전달 cout << "참조 전달 후 num: " << num << endl; // 출력: 참조 전달 후 num: 200 return 0; }
- 값 자체를 전달하는 방식: 값을 복사하여 함수로 전달
- 주소값을 전달하는 방식
- 참조자를 전달하는 방식이 있습니다.
- 조건문
- if, if-else, else if
- 복합조건 ( &&, || )
- [코드스니펫] 1부터 20까지 3의 배수 출력
-
#include <iostream> using namespace std; int main() { for (int i = 1; i <= 20; i++) { // 초기화: i = 1 // 종료 조건: i <= 20 // 사후 동작: i++ if (i % 3 == 0) { // 조건: i가 3의 배수인지 확인 cout << i << " "; // 3의 배수일 때 i를 출력 } } cout << endl; // 줄 바꿈 // 출력값: 3 6 9 12 15 18 return 0; }
C++Text RPG
- Complete Step 1 & 2
- STEP 1 - 캐릭터 생성 화면 (변수, 배열, 함수)구현 항목
-
=========================================== [ Dungeon Escape Text RPG ] =========================================== Enter your hero's name: John Enter HP and MP: 80 60 Enter Attack and Defense: 40 25 ==================================== John's Stats ==================================== HP: 80 MP: 60 Attack: 40 Defense: 25 ==================================== - [ ] string 타입으로 이름 입력 받기
- [ ] const int SIZE = 4, int stat[SIZE] = {0} 배열 선언하기
- [ ] stat[0] = HP, stat[1] = MP, stat[2] = 공격력, stat[3] = 방어력 순서로 사용하기
- [ ] cin으로 스탯 2개씩 입력 받기
- [ ] void printStatus(string name, int stat[]) 함수 작성 후 호출하기
- 배열 인덱스 순서를 주석으로 남겨두면 이후 STEP에서 덜 헷갈립니다
- STEP 2 - 입력 유효성 검사 (while, 조건문)구현 항목
-
Enter HP and MP: 30 80 HP or MP is too low. Try again. Enter HP and MP: 80 60 Enter Attack and Defense: -5 25 Attack or Defense is too low. Try again. Enter Attack and Defense: 40 25 - [ ] HP/MP 입력 블록을 while(true)로 감싸기
- [ ] HP와 MP가 모두 50보다 클 때만 break로 입력 루프 탈출하기
- [ ] 공격력/방어력도 동일하게 반복 입력 구현하기
- while 안에서 입력을 다시 받지 않으면 무한 루프가 됩니다.
