2026/05 18

[C++] Text RPG 프로젝트 개인 회고록

1. 내가 담당한 구현 기능이번 팀 프로젝트에서 저는 플레이어의 핵심 성장 루프인 '캐릭터 스탯 관리'와 '대장간 강화 시스템'의 설계를 맡았습니다.PlayerCharacter 클래스 및 스탯 시스템 구현플레이어의 레벨, 경험치, 공격력, 체력 등 핵심 데이터를 은닉화(private)하고 관리하는 본체 구조 설계.장비 장착 및 해제 시 캐릭터 스탯에 실시간으로 가중치가 반영되는 연동 시스템 구현.대장간(Smithy) 강화 시스템 로직 설계플레이어가 모은 재화(골드, 강화석 등)를 소모하여 보유한 무기/갑옷 등의 장비를 강화하는 콘텐츠 구현.강화 단계가 올라갈 때마다 아이템의 기본 스탯(Stats)을 유동적으로 상승시키는 성장 공식 적용.2. 기술적 핵심 인사이트코드를 분석하고 결합하는 과정에서 객체지향 ..

TIL 2026.05.29

[C++] 문자열 대소문자 변환 구현 및 탐색적 학습 방법론

학습 목표C++ 표준 라이브러리(std::string, )를 활용한 문자열 대소문자 반전 기능을 구현할 수 있다.아스키(ASCII) 코드 메커니즘을 이해하고, 내장 함수 없이 제어문과 연산자만으로 변환 로직을 설계할 수 있다.지식 습득 과정에서 API 명세(Specification)와 동작 원리를 추적하는 올바른 엔지니어링 학습 습관을 형성한다.1. 문제 정의 (Problem Statement)사용자로부터 영문 알파벳으로 구성된 하나의 문자열을 입력받아, 대문자는 소문자로, 소문자는 대문자로 상호 변환하여 출력하는 프로그램을 작성하시오.입력 예시: aBcDe출력 예시: AbCdE2. 핵심 이론 및 원리 (Core Concepts)A. 아스키(ASCII) 코드와 문자의 정수 표현컴퓨터 내부에서 모든 문자는..

TIL 2026.05.28

[C++]2차원 벡터(Vector)의 개념과 활용

1. 2차원 벡터의 개념 및 구조C++에서 2차원 벡터(std::vector>)는 '벡터를 원소로 가지는 벡터'를 의미한다. 이는 수학에서의 행렬(Matrix)이나 일반적인 2차원 배열과 유사한 격자형(표) 구조를 형성한다.행(Row): 가로줄을 의미하며, 아파트의 '층'에 비유할 수 있다. matrix.size()를 통해 전체 행의 개수를 구할 수 있다.열(Column): 세로줄을 의미하며, 아파트의 '호수'에 비유할 수 있다. matrix[0].size()를 통해 하나의 행이 가진 열의 개수를 구할 수 있다.주의: 프로그래밍에서 모든 인덱스(Index)는 1이 아닌 0부터 시작한다. 따라서 $m \times n$ 크기의 행렬에서 마지막 원소의 인덱스는 [m-1][n-1]이 된다.2. 2차원 벡터의 선..

TIL 2026.05.27

[C++]텍스트RPG를 만들면서 알게된 개념과 트러블슈팅

Ⅰ. 객체지향 구조 및 메모리 제어 이론1. 포인터를 통한 객체 데이터의 영구적 수정 원리C++에서 변수는 값에 의한 전달(Pass by Value)과 참조/주소에 의한 전달(Pass by Reference/Pointer) 방식으로 나뉜다. Character 클래스가 장착 중인 무기를 Weapon* 형태의 포인터 변수로 관리할 때, 이 변수는 실제 무기 객체가 존재하는 힙(Heap) 메모리 영역의 주소값을 저장한다.메인 루프에서 해당 주소값을 참조하여 멤버 함수를 호출하고 값을 수정(currentWeapon->SetStats())하면, 복사본이 아닌 메모리 상의 원본 객체가 직접 변경된다. 따라서 함수나 제어 블록이 종료되어 소멸하더라도 변경된 데이터는 메모리에 영구적으로 유지된다.2. 구조체 백업 패턴..

TIL 2026.05.26

[TIL] Visual Studio C++ 프로젝트 및 폴더 관리 마스터하기 (필터, OneDrive 충돌, 빌드 제외)

C++로 콘솔 RPG 토이 프로젝트를 진행하면서, 소스 코드 로직 외에 Visual Studio 환경 설정과 프로젝트 관리 때문에 예상치 못한 삽질을 했다. 오늘 겪은 시행착오와 해결 방법을 잊지 않도록 상세히 기록해 둔다.1. 윈도우 실제 폴더 vs Visual Studio '필터'의 차이C++ 프로젝트 파일이 많아져서 윈도우 탐색기에서 Entity, Player 같은 폴더를 만들고 파일들을 정리했다. 그런데 Visual Studio를 켜니 파일들을 찾지 못해 빌드 에러가 발생했다. 알고 보니 실제 폴더와 IDE 내부의 필터는 완전히 다른 개념이었다.실제 폴더 (윈도우 탐색기): 하드디스크에 실제로 존재하는 물리적인 파일 경로. 파일 위치를 옮기면 실제 경로가 바뀐다.필터 (Visual Studio 솔..

TIL 2026.05.22

[C++] 프로그래머스 - 문자열 내림차순 정렬하기 (sort 함수의 인자와 STL의 구조적 이해)

최근 코딩 테스트 문제를 풀던 중, 문자열을 내림차순으로 정렬하는 과정에서 겪은 컴파일 에러와 이를 해결하며 공부한 C++ STL의 이론적 배경을 정리해 보고자 합니다.처음에는 단순히 '첫 번째 글자부터 마지막 글자까지 정렬하면 되겠지'라는 생각으로 다음과 같이 코드를 작성했습니다.❌ 컴파일 에러가 발생한 초기 코드C++ #include #include #include using namespace std;string solution(string s) { // 컴파일 에러 및 런타임 에러 발생 sort(s[0], s[s.size()]); return s;}의도와 달리 이 코드는 컴파일 에러를 유발하며, s[s.size()] 역시 문자열의 인덱스 범위를 벗어난 매우 위험한 접근이었습니..

TIL 2026.05.21

[UE5] 언리얼 엔진 5.5 프로젝트 실행파일(패키징) 만드는 방법 정리

안녕하세요! 오늘은 언리얼 엔진 5.5(Unreal Engine 5.5)로 만든 프로젝트를 다른 사람들에게 공유하거나 직접 플레이해 볼 수 있도록 실행파일(.exe)로 빌드 및 패키징하는 방법을 알아보겠습니다."개발은 다 끝났는데 빌드에서 자꾸 에러가 나요!" 하시는 분들을 위해 사전 세팅부터 필수 체크리스트까지 한방에 정리해 드립니다.0. 패키징 전 필수 사전 작업 (체크리스트)빌드 버튼을 누르기 전에 아래 항목이 세팅되어 있는지 반드시 확인해 주세요. 이 단계를 건너뛰면 높은 확률로 빌드 에러를 만나게 됩니다.Visual Studio 및 컴파일러 설치: C++ 프로젝트가 아니더라도 언리얼 엔진 빌드에는 VS의 C++ 컴파일러가 필요합니다. (UE 5.5 기준 Visual Studio 2022 필수 최..

TIL 2026.05.20

[C++] 코딩 테스트 오답 노트 & 코드 개선 (가운데 글자 / 수박수박수)

1. 가운데 글자 가져오기💡 핵심 아이디어 및 접근법문자열의 길이(s.size())를 이용해 가운데 글자를 뽑아낼 때는 인덱스가 0부터 시작한다는 점을 유의해야 합니다. 홀수와 짝수일 때의 처리가 조금씩 달라집니다.홀수 (예: "abcde", 길이 5): 5 / 2 = 2가 됩니다. 인덱스 2는 세 번째 글자인 'c'를 정확히 가리키므로 그대로 사용하면 됩니다.짝수 (예: "qwer", 길이 4): 4 / 2 = 2가 되어 인덱스 2인 'e'를 가리키게 됩니다. 하지만 짝수일 때는 가운데 두 글자('w', 'e')를 가져와야 하므로, 시작점을 (길이 / 2) - 1로 잡아 앞 글자부터 챙겨야 합니다.❌ 기존 코드C++ #include #include using namespace std;string so..

TIL 2026.05.19

[C++] 2026-05-18 코딩 테스트 첫걸음: 문자열과 벡터(자료구조) 핵심 정리

📝 오늘 학습을 시작하며 (작성 이유)오늘부터 본격적으로 C++ 및 프로그래머스 코딩 테스트 학습 시작.처음 마주하는 개념들이 빠르게 쏟아져 나와 머릿속 지식들이 아직 파편화되어 있음.나중에 혼자 다시 보며 완벽하게 복습하고, 같은 실수를 반복하지 않기 위해 기록으로 남김.📌 1. 핵심 개념 한눈에 보기 (요약 표)분류함수 및 문법핵심 기능 / 용도복습용 한줄 팁문자열s[index] = 'Char';특정 위치의 문자 직접 수정단일 문자를 바꿀 때는 replace보다 훨씬 빠르고 간결함.자료구조v.push_back(value);벡터(배열) 맨 뒤에 데이터 추가데이터가 들어올 때마다 배열 크기가 알아서 늘어남.자료구조v.erase(Iterator);특정 위치의 데이터 삭제인덱스 정수(0, 1)가 아니라 ..

TIL 2026.05.18