반응형

2025/12 38

[알고리즘] 그래프(Graph)

그래프는 정점(vertex)와 간선(edge)으로 이루어진 비선형 데이터 구조이다.트리는 특정한 계층 구조를 가졌지만 그래프는 트리보다 더 자유로운 형태를 가지고 있다.트리는 하나의 루트에서 시작하여 계층적으로 뻗어 나가는 구조지만그래프는 모든 방향으로 연결 될 수 있는 구조,2025.11.28 - [CS(computer Science)/자료구조(Data Structures)] - 트리(Tree) 트리(Tree)트리는 계층적(hierarchical) 데이터 구조로 여러개의 노드 가 부모-자식 관계로 연결 되 있는 자료 구조마치 나무가 땅에 뿌리를 내리고 가지를 뻗어나가는 것 처럼 트리도 하나의 root노드에서 시codehortus.tistory.com1. 그래프의 기본 개념정점(Vertex, 노드) : ..

[알고리즘]슬라이딩 윈도우(Sliding Window)

배열이나 리스트와 같은 선형 구조에서 일정 범위(윈도우)를 유지하며 옆으로 밀면서 데이터를 처리하는 기법,주로 연속된 부분 배열의 최대합 이나 특정 조건을 만족하는 구간찾기 등에서 중복 계산을 피하기 위해 사용 되며 시간 복잡도를 O(n²) 에서 O(n) 으로 획기적으로 줄여준다. 슬라이딩 윈도우의 핵심 원리윈도우가 옆으로 한칸 이동할 때 윈도우 안에 있는 모든 요소를 더할 필요 없다.나가는 요소(맨앞) 는 빼고 들어오는 요소(맨뒤) 는 더해주기만 하면 된다.1. 고정 윈도우 (Fixed Sliding Window)쓰는 상황연속된 길이 K가 고정예: “연속 K개 합 최대/최소”, “길이 K 구간의 평균”, “길이 K에서 조건 만족 개수”원리첫 구간 [0..K-1]을 한 번 계산다음 구간으로 갈 때는..

[c++]람다 함수(lambda)

C++ 11 에서 도입된 기능이다.람다 함수(lambda)는 이름 없는 함수 객체(익명 함수) 를 코드 안에서 즉석으로 정의해서 쓰는 문법이다.C++에서는 특히 콜백, STL 알고리즘, 이벤트 처리, 정렬/필터 조건을 짧게 표현할 때 표준적쓴다.1) 기본 형태[capture](params) -> return_type { body }capture: 바깥 스코프 변수를 람다 안에서 쓰기 위해 붙잡는 방식params: 매개변수return_type: 보통 생략(컴파일러가 추론). 필요하면 명시body: 함수 본문예) auto add = [](int a, int b) { return a + b; };int r = add(3, 4); // 72) 캡처(capture) 규칙이 핵심C++ 람다는 클로저(closure)..

c++ 2025.12.29

[c++]c++ 정규 표현식 (<regex>)

1. 개념정의: 문자열에서 특정 패턴을 찾고, 검사하고, 치환하는 도구C++ 지원 헤더: 주요 클래스:std::regex : 정규 표현식 패턴std::smatch : 문자열 매칭 결과 저장std::regex_match : 전체 문자열이 패턴과 일치하는지 확인std::regex_search : 부분 문자열에서 패턴 찾기std::regex_replace : 패턴 치환2. regex_match (전체 매칭)#include #include using namespace std;int main() { string s = "abc123"; regex pattern("[a-z]+[0-9]+"); // 알파벳+숫자 if (regex_match(s, pattern)) { cout abc123은..

c++ 2025.12.26

[Unreal] 콘솔 변수용 클래스(TAutoConsoleVariable)

TAutoConsloeVariable 은 콘솔 변수를 직접 선언 하고 관리하는 템플릿 클래스.게임 실행중 직접 값을 설정 하거나 확인 할 수 있고 데이터 타입에 따라 다양한 설정을 지원한다.주요 특징직접적으로 변수의 값을 저장 하고 관리템플릿 형식으로 제공, 변수를 정적으로 선언하여 사용.Get() 메서드를 통해 현재 값 전달.정의template class TAutoConsoleVariable : public FAutoConsoleObject{나의 경우 오브젝트 풀링의 디버깅을 위해 사용했다.static TAutoConsoleVariable CVarPoolDebug( TEXT("h.PoolDebug"), 0, TEXT("ObjectPool debug logs (0=off, 1=on)\nUsage: h.P..

Unreal 2025.12.24

[알고리즘] 백트래킹(Backtracking)

가능한 모든 경우를 탐색하되, 조건을 위반하는 순간 즉시 되돌아가는 탐색 기법이다.브루트포스의 비효율을 줄이기 위한 방법으로 다음 단계로 나아가는 것이 의미가 없다고 판단하면 가지치기해서 다시 되돌아가 다른 경로를 찾는 탐색 알고리즘이다.유망함(promising) : 현재 경로가 해답이 될 가능성이 있는 상태가지치기(pruning) : 유망하지 않은 경로를 더이상 탐색하지 않고 차단하는것보통 재귀(Recursion) 와 DFS(깊이 우선 탑색) 을 결합하여 구현한다. [알고리즘] 부르트 포스(Brute Force)가능한 모든 경우를 전부 시도하여 정답을 찾는 알고리즘 기법,핵심개념모든 경우를 빠짐 없이 검사한다.논리적으로 단순하며 구현이 쉽다.시간 복잡도가 크기 쉬워 입력 크기가 작을 때만 실codeh..

[스케줄링] 스케줄링이란

CPU는 한번에 하나의 작업만 수행 할 수 있기 때문에 여러 프로그램이 동시에 실행 되는것 처럼 보이기 위해선 CPU가 어떤 순서로 어떤 작업을 처리할지 결정하는 메커니즘이 필수 이다. 따라서 멀티 프로세스 환경에서는 제한된 자원을 공정하게 분배하고 효율적으로 활용하기 위해 순서를 정하고 시간을 배정하는 일련의 과정을 의미한다.스케줄링의 핵심 목적1. 공평성과 예측성 : 모든 프로세스가 공정하게 CPU 시간을 배분 받고 각 프로세스의 수행 시간을 예측 할 수 있도록 보장한다.2. 자원 활용 극대화 : 시간당 처리되는 프로세스의 수(처리량)를 증가 시키고 CPU가 유휴 상태(Idle)가 되지 않도록 관리한다.3. 우순순위 기반 처리 : 실시간 프로세스와 중요한 작업을 우선적으로 실행해 시스템이 더 효과적..

[알고리즘] 부르트 포스(Brute Force)

가능한 모든 경우를 전부 시도하여 정답을 찾는 알고리즘 기법,핵심개념모든 경우를 빠짐 없이 검사한다.논리적으로 단순하며 구현이 쉽다.시간 복잡도가 크기 쉬워 입력 크기가 작을 때만 실용적이다.최적화가 없으면 시간 초과의 원인이 된다.시간 복잡도부분집합을 전부 구하는 브루트포스: 2^n순열(모든 원소를 나열하는 경우)의 브루트포스: n!이중, 삼중 반복문 등을 이용한 모든 ‘조합’ 탐색 1. 중첩 반복문 1부터 3까지 숫자 3개를 골라 나열하는 모든 경우(중복허용)for (int i = 1; i 2.bitmasking 을 이용한 부분집합 생성예: 어떤 집합이 1,2,3 이라면, 부분집합은 총 2^3 = 8개공집합, [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]비트마스킹으로..

[동기화] 교착상태(DeadLock)

두 개 이상의 프로세스가 서로가 점유한 자원을 기다리면서 무한정 대기하는 상황,자원을 점유한 프로세스 들이 서로 다른 프로세스가 가진 자원을 양보하기를기다리면서무한 대기 해 아무것도 진행 할 수 없는 상태 동기화 기법, 뮤텍스, 세마포어, 이벤트객체임계 구역 문제를 해결하기 위해 상호 배제와 나머지 조건을 보장 하는 다양한 동기화 기법을 적용해야 한다.임계 구역에 한번에 하나의 프로세스나 스레드만 진입 하도록 보장해 데이터의 일codehortus.tistory.com 교창 상태가 발생하기 위한 4가지의 조건, 동시에 만족해야 한다.1. 상호 배제(mutual exclusion) : 자원은 한 번에 한 프로세스만 사용 할 수 있다. 자원을 점유한 프로세스가 있는 경우다른 프로세스는 해당 자원을 사용할 ..

[동기화] 동기화 기법, 뮤텍스, 세마포어, 이벤트객체

임계 구역 문제를 해결하기 위해 상호 배제와 나머지 조건을 보장 하는 다양한 동기화 기법을 적용해야 한다.임계 구역에 한번에 하나의 프로세스나 스레드만 진입 하도록 보장해 데이터의 일관성과 무결성을 유지 할 수 있게 한다2025.12.10 - [CS(computer Science)/운영체제(OS)] - 동기화(Synchronization) 동기화(Synchronization)프로세스나 스레드가 공유 자원에 접근 할 때 이들의 실행 순서를 조정해 데이터의 무결성과 일관성을 보장하는 기법,주로 멀티 스레드나 멀티 프로세스 환경에서 발생하는 문제를 해결하는데codehortus.tistory.com 1. 뮤텍스(mutex)상호 배제를 보장하는 동기화 기법,임계 구역을 보호 하기 위해 한번에 하나의 스레드만 공유..

반응형