CS 29

C++ 캐스팅 연산자

C++에서 캐스팅(Casting)은 특정 타입의 변수나 객체를 다른 타입으로 변환하는 과정을 말합니다. C++은 C언어 스타일의 캐스팅 외에도, 더 명시적이고 안전한 4가지의 캐스팅 연산자를 제공합니다. 이 연산자들은 개발자의 의도를 명확하게 드러내고, 컴파일 타임이나 런타임에 타입 검사를 수행하여 잠재적인 오류를 줄여줍니다. C 스타일 캐스팅의 문제점C언어에서 사용하던 방식은 다음과 같습니다.// (type)expressionint value = (int)float_value;이 방식은 편리하지만, 몇 가지 문제점을 가지고 있습니다.가독성 저하 : 코드 전체에서 캐스팅이 일어나는 부분을 찾기 어렵습니다.위험성 : 컴파일러가 타입 변환의 안정성을 제대로 검사하지 못하는 경우가 많습니다. 예를 들어, 관련..

CS/C#_C++ 2025.10.07

C++ STL(Standard Template Library)

STL(Standard Template Library)의 정의STL(Standard Template Library)은 C++ 표준 라이브러리의 핵심 구성 요소로, 자료구조와 알고리즘을 템플릿 기반으로 제공하여 코드의 재사용성과 효율성을 극대화한 라이브러리입니다.주요 구성 요소로는 데이터를 저장하는 컨테이너(Container), 컨테이너의 원소에 접근을 일반화하는 반복자(Iterator), 그리고 데이터를 처리하는 알고리즘(Algorithm)이 있습니다.이 세 요소를 조합하여 개발자가 직접 자료구조를 구현하는 수고를 덜고, 검증되고 최적화된 기능을 빠르고 안전하게 사용할 수 있습니다. STL의 핵심 구성 요소STL은 크게 3가지(넓게는 5가지) 핵심 요소가 유기적으로 연결되어 동작합니다.구성 요소설명대표 ..

CS/C#_C++ 2025.10.04

C# 클래스(Class)와 구조체(Struct)의 차이점

핵심 개념 정리가장 근본적인 차이는 "어떤 타입인가?" 입니다.클래스 (Class)는 참조 타입 (Reference Type)입니다.구조체 (Struct)는 값 타입 (Value Type)입니다.이 차이점 때문에 아래와 같은 여러 파생적인 특징들이 나타납니다.구분 항목클래스 (Class)구조체 (Struct)타입 종류참조 타입 (Reference Type)값 타입 (Value Type)메모리 할당힙 (Heap) 영역에 할당스택 (Stack) 영역에 할당데이터 전달주소값(참조)을 복사데이터 전체를 복사상속다른 클래스 상속 가능상속 불가능 (인터페이스 구현은 가능)Null 할당null 할당 가능null 할당 불가능 (Nullable 제외)생성자매개변수 없는 기본 생성자 자동 지원C# 10부터 매개변수 없는 ..

CS/C#_C++ 2025.10.03

작업 관리자 CPU 분석

(뜬금없지만, 작업관리자 CPU 항목 보고, 궁금해서 재미나이로 개념 정리해 봄...) 속도 (GHz) : CPU의 심장 박동 수작업 관리자에 보이는 속도(예: 3.33GHz)는 CPU의 클럭 속도(Clock Speed)를 의미합니다.GHz (기가헤르츠) : 1초에 CPU 클럭이 몇 번이나 진동하는지를 나타내는 단위입니다. 1GHz는 1초에 10억 번의 사이클을 의미하죠. 즉, 3.33GHz는 1초에 약 33억 3천만 번의 기본 연산을 처리할 수 있다는 뜻입니다. 클럭 속도가 높을수록 기본적인 처리 속도가 빠릅니다.속도가 계속 변하는 이유? CPU는 항상 최고 속도로 달리지 않습니다. 웹서핑처럼 가벼운 작업을 할 때는 전력 소모를 줄이기 위해 기본 속도(예: 2.50GHz)로 동작하다가, 게임처럼 고사양..

CS/기타 2025.10.03

C# 박싱(Boxing) 언박싱(Unboxing)

C#에서 박싱(Boxing)과 언박싱(Unboxing)은 값 타입과 참조 타입 간 변환에 사용되는 연산입니다.(박싱/언박싱은 C#/.NET에서 정의된 개념이지만, 값 타입과 참조 타입 간 변환 자체는 다른 언어에서도 유사하게 사용됩니다.) C#의 데이터 형식C#의 데이터 형식은 크게 값 형식(Value Type)과 참조 형식(Reference Type)으로 나뉩니다.값 형식 (Value Type) : int, float, char, struct 등 스택(Stack) 메모리에 실제 데이터를 직접 저장하는 형식입니다. 빠르고 효율적이지만, 다른 곳으로 전달할 때 값을 복사합니다.참조 형식 (Reference Type) : class, string, object 등 스택(Stack)에는 데이터가 저장된 힙(H..

CS/C#_C++ 2025.10.03

길 찾기 알고리즘 비교

알고리즘설명장점단점사용 사례BFS시작 노드에서 가까운 노드부터 차례로 탐색간선 가중치가 동일할 때 최단 경로 보장, 구현 단순메모리 사용량 큼(큐 필요), 가중치 있는 그래프 부적합미로 최단 경로, 네트워크 탐색DFS 한 경로를 끝까지 탐색한 후 돌아와 다른 경로 탐색구현 간단, 메모리 사용 적음, 모든 경로 탐색 가능최단 경로 보장 안 됨, 사이클 처리 필요경로 존재 여부 확인, 퍼즐 탐색Dijkstra단일 시작 노드 → 그래프 내 모든 노드 최단 경로 계산음수 가중치만 없으면 최단 경로 정확히 계산, 다양한 네트워크 최적화 활용시간 복잡도 높음(O(E log V)), 음수 가중치 불가GPS 내비게이션, 통신망 최적화A*단일 시작 노드 → 특정 목표 노드까지 최단 경로 탐색 (휴리스틱 사용)실제 최단 ..

CS/알고리즘 2025.10.02

DFS / BFS

그래프 탐색 알고리즘 비교자료구조큐 사용스택(또는 재귀 호출) 사용탐색 방식한 층씩 가로로 확장하며 탐색한 경로를 끝까지 깊게 탐색 후 되돌아옴장점- 최단 경로 보장- 깊이가 무한히 깊어도 해를 찾을 수 있음- 얕은 깊이의 해 탐색에 유리- 구현이 간단함- 메모리 사용량 적음- 모든 해 탐색(백트래킹 등)에 유리단점- 큐 사용으로 메모리 소모 큼- 불필요하게 깊게 탐색할 수 있음- 최단 경로 보장하지 않음시간복잡도 (인접 리스트)O(V + E)O(V + E)시간복잡도 (인접 행렬)O(V²)O(V²)BFS (너비 우선 탐색)BFS는 큐를 이용하여 현재 정점에서 갈 수 있는 인접 정점을 모두 큐에 넣고, 이를 차례대로 탐색하는 방식이다.즉, 깊게 들어가기보다 가로 방향으로 한 층씩 탐색한다고 이해하면 된다...

CS/알고리즘 2025.10.02

C# GC(Garbage Collection)

GC란 무엇인가?GC(Garbage Collection, 가비지 컬렉션)는 자동 메모리 관리 기법으로, 프로그램이 동적으로 할당했던 메모리 중 더 이상 필요하지 않은 영역을 찾아 해제한다. C의 free()나 C++의 delete처럼 개발자가 직접 메모리를 관리하지 않아도 되며, Java, C#, Python 등에서 주로 사용된다.가비지(Garbage) : 힙 영역에 생성된 객체 중 어디서도 참조하지 않아 접근 불가능한 객체.GC의 기본 동작 방식 : Mark and SweepMark 단계루트 집합(Root Set: 스택 변수, 전역 변수 등)에서 시작해 참조 가능한 모든 객체를 탐색하고 표시한다.Sweep 단계힙 전체를 순회하며 표시되지 않은 객체를 제거한다.Compact 단계 (선택적)살아있는 객체들..

CS/C#_C++ 2025.10.02

(공통)C++과 C# 언어 특성 비교

1. 언어 수준 / 메모리 관리C++ : 하드웨어와 밀접한 저수준 언어. 개발자가 new와 delete로 메모리를 수동 관리.C# : .NET 플랫폼에서 실행되는 고수준 언어. 가비지 컬렉터(GC)가 메모리를 자동 관리해 메모리 누수를 줄임. 2. 타입 안전성C++ — 약한 타입 검사포인터 연산이나 reinterpret_cast로 잘못된 변환이 가능. 컴파일 시 에러가 없고 런타임에서 예측 불가 동작 발생.#include using namespace std;int main() { int a = 10; double* ptr = (double*)&a; // int 주소를 double 포인터로 강제 변환 *ptr = 3.14; // 위험한 접근 co..

CS/C#_C++ 2025.10.02