[TIL_C++] 템플릿과 STL
🎮 오늘의 기술 키워드C++ 템플릿 (Templates) 템플릿은 C++의 메타프로그래밍 기법 중 하나로, 타입에 구애받지 않는 범용적인 함수나 클래스를 작성할 수 있게 해준다. 즉, 하나의 소스 코드로 여러 데이터 타입을 처리할 수 있는 일반화 프로그래밍을 가능하게 한다. 템플릿은 런타임이 아닌 컴파일 타임에 컴파일러가 특정 타입에 맞게 코드를 인스턴스화(Instantiation)하여 실제 실행 가능한 코드를 생성한다. 예를 들어, template 구문을 사용하면 T가 int일 때의 함수와 string일 때의 함수가 각각 별도의 코드로 생성된다. C++ STL (Standard Template Library) STL은 C++ 표준에 포함된 강력한 라이브러리로, 대부분 템플릿으로 구현되어 있다. ST..
2025.08.28
C++
[TIL_C++] 각 자릿수 합에 대한 코드 짜보기
🎮 오늘의 기술 키워드C++: 자연수 각 자릿수의 합 구하기나눗셈( / ) & 나머지( % ) 연산자료형 변환 (int to string)🌍 나만의 연결프로그래밍 문제를 해결하는 것은 영화 시나리오를 기획하는 것과 비슷하다고 느꼈다. 오늘 해결한 '자릿수 합' 문제도 마찬가지다.기획자의 관점에서 이 문제를 바라보면, "최소한의 자원으로 목표를 달성하는 최적의 방법은 무엇인가?"라는 질문을 던지게 된다.방법 1 (수학적 접근): N을 10으로 반복해서 나누는 방식은, 마치 시나리오에서 복잡한 사건을 가장 핵심적인 요소(일의 자리 숫자)부터 하나씩 분해해 나가는 것과 같다. 불필요한 장치(문자열 변환) 없이 가장 효율적인 방법으로 문제를 해결한다.방법 2 (문자열 접근): 정수를 문자열로 변환하는 방식은..
2025.08.27
C++
[TIL_C++] 자원관리(스마트포인터)/리플렉션
C++에서 자원을 관리하는 방법코딩에서 자원 관리는 프로그램을 안정적으로 만들기 위해 매우 중요한 작업이다.쉽게 말해, 프로그램을 실행하는 동안 사용한 메모리를 깨끗하게 정리해서 다음에도 쓸 수 있도록 하는 것이다. 1. 메모리 누수와 댕글링 포인터 메모리 누수 (Memory Leak): new로 메모리를 할당했는데, delete로 해제하지 않아 메모리가 낭비되는 현상.마치 물을 틀어놓고 잠그지 않아 물이 계속 새는 것 같은 느낌이다.코드 예시 (나쁜 코드): int* p = new int; // 메모리를 빌림// ... p를 사용함// delete p; // 댕글링 포인터 (Dangling Pointer): 이미 해제된 메모리 공간을 가리키는 포인터. 폐쇄된 가게의 주소를 들고 있는 것과 같아서, 이 ..
2025.08.26
C++
[TIL_C++]주어진 단어를 회전시켜 단어를 만들기
1단계: 회전을 위한 준비가장 먼저 할 일은 회전시킬 단어를 저장하고, 회전된 단어들을 담을 공간을 만드는 것.C++에서는 std::string과 std::vector을 사용. #include #include #include // 예시 단어std::string original_word = "abc";// 회전된 단어들을 저장할 리스트(벡터)std::vector rotations; 2단계: 회전 로직 구현단어를 한 칸씩 회전시키는 핵심 로직을 만들기. 'abc'를 'bca'로, 'bca'를 'cab'로 바꾸는 과정.이 작업은 for 반복문을 사용해 단어의 길이만큼 반복하면 된다. // 1단계에서 준비한 변수들을 사용std::string current_word = original_word;// 단어의 길이만..
2025.08.25
C++
[TIL_C++] OOP와 전직시스템 구현 과제 느낀점
✍️ 오늘의 TIL (2025년 8월 22일) - 객체 지향 프로그래밍 (전직 시스템)💡 과제를 통해 배운 객체 지향 프로그래밍 (OOP) 개념 이번 과제를 통해 C++의 핵심인 객체 지향 프로그래밍의 원리를 직접 적용해 보았다.특히, 'Player'와 여러 직업 클래스를 만들면서 상속과 다형성의 유용성을 느낄 수 있었다. 1. 상속: 코드 재사용성의 경험`Player`라는 기본 클래스를 만들고, `Warrior`, `Magician` 같은 직업 클래스가 이를 상속받는 구조를 만들었다.-모든 직업이 공통으로 가지는 속성(`HP`, `MP` 등)과 기능(`printPlayerStatus()`)을 부모 클래스에 정의함으로써 중복 코드를 줄일 수 있었다.자식 클래스는 부모의 기능을 물려받으면서, `atta..
2025.08.22
C++
[TIL_C] 클래스
Class는 C++에서 객체 지향 프로그래밍(OOP)의 핵심적인 개념으로, 객체를 만들기 위한 틀(blueprint) 또는 설계도 역할을 한다. 클래스는 데이터와 그 데이터를 다루는 함수를 하나의 단위로 묶어준다. 클래스의 구성 요소클래스는 크게 두 가지로 구성됨.멤버 변수 (Member Variables): 객체가 가지는 속성(상태)을 나타냅니다. 예를 들어, Car 클래스라면 color, speed 같은 변수들이 멤버 변수가 된다.멤버 함수 (Member Functions): 객체가 할 수 있는 동작(행동)을 정의합니다. 예를 들어, Car 클래스라면 accelerate(), brake() 같은 함수들이 멤버 함수가 된다. 클래스와 객체의 차이클래스: 붕어빵을 만드는 '틀' 그 자체.객체 (Objec..
2025.08.21
C++
[TIL_C++] 상태창 구현해보기
오늘 거의 하루를 상태창 구현하기 과제에 매달렸다. 개발 프로세스 가이드에는1 요구사항 분석 및 설계 -> 2 코드 작성 및 구현 -> 3 테스트 및 디버깅 순서로 가이드 되어 있었다 아직 강의도 덜 듣고 개념이 다 잡혀져있지 않은 상태에서 해도 되나 싶었는데생각해보니 아무리 머리에 집어 넣는다고 한들 해보지 않으면 코딩이 체화 되지 않을 것 같아서일단 부딪히자는 생각으로 그냥 뛰어들었다. 구글링과 AI, 그간 배운 내용에 대한 메모들을 총동원하여 코드를 짜보기 시작했다. 사실 뭔가 강의를 듣거나 혼자 공부하는 것보다 직접 코드 짜보고 뜯는 과정에서 얻은 배움이 더 많음을 느꼈다.이게 생소한 단어와 문장들을 강의로 듣는 것보다 눈으로 익히고 만져보는 경험이 더 큰 것을 해보면서 느꼈다. 백문이 불여일견이..
2025.08.20
C++
[TIL_C++]매개변수, 지역변수 / Call by Value, Ref / 메모리 할당
오늘의 기술 키워드매개변수 (Parameter) 매개변수는 함수가 외부로부터 값을 전달받기 위해 사용하는 특별한 지역변수라고 할 수 있다.함수를 정의할 때 괄호 안에 선언하며, 함수가 호출될 때 값을 전달받는다.역할: 외부 데이터를 함수 내부로 가져오는 통로 역할을 합니다.생성 시기: 함수가 호출될 때 생성되고, 함수 실행이 끝나면 사라집니다.void printSum(int a, int b) { // 여기서 a와 b가 매개변수입니다. int sum = a + b; printf("합계: %d\n", sum);}int main() { printSum(10, 20); // 10과 20이 a와 b에 전달됩니다. return 0;} 이 예시에서 printSum 함수는 a와 b라는 매개변수를 ..
2025.08.19
C++
no image
[TIL_C++] 반복문 for, while 기초
🎮 오늘의 기술 키워드반복문for문while문 정해진 횟수 반복 → for, 조건이 참인 동안 반복 → while 감 잡음 for문[for==횟수] 초기화 과정은 한 번만 하고, 이후에 종료 조건 확인 → 동작 → 사후 동작 → 종료 조건 확인 순으로 반복. 예) 5~1 출력#include using namespace std;int main() { for (int i = 5; i >= 1; i--) { // 초기화: i = 5 // 종료 조건: i >= 1 // 사후 동작: i-- cout while문[while==상황] 혹은 무한반복반복 범위가 명확한 경..
2025.08.18
C++