분류 전체보기 73

[알고리즘/백준] 4195: 친구 네트워크

https://www.acmicpc.net/problem/4195 1. 문제 접근 두 사람을 친구로 만들었을 때, 그들이 속한 그룹(네트워크)의 총 인원 수는 몇 명인가?"를 묻는 문제이다. 이 때, 사람을 노드로, 친구 관계를 엣지로 생각한다. 친구 네트워크를 구하기 위해선서로소 집합을 효율적으로 표현하고 관리하는 자료구조인 유니온-파인드 알고리즘을 이용하여 해결할 수 있다! (사람 : 집합의 대표) 구조로 저장하기 위해 map 자료구조를 선택한다.static std::map parent; 또한, 집합에 몇명의 있는지를 저장하기위해 map 자료구조를 하나 더 만든다. (집합의 대표 : 집합에 속한 인원수)static std::map network; 일반적인 Union-find 알고리즘으로 구현하..

알고리즘/백준 2025.07.08

[알고리즘/그래프] 유니온 파인드 (Union Find)

Union-Find 알고리즘은 서로소 집합을 효율적으로 표현하고 관리하는 자료구조입니다.주로 그래프에서 사이클 판별, 크루스칼 알고리즘을 이용한 최소 신장 트리(MST) 구성 등에 사용됩니다. Union-Find는 두 가지 주요 연산을 지원합니다:find(x)원소 x가 속한 집합의 대표(root 또는 부모)를 찾습니다.union(x, y)원소 x, y가 속한 두 집합을 하나로 합칩니다. 각 원소는 트리 구조로 연결되며, 각 집합은 하나의 루트 노드(대표 원소)를 가집니다. 예시10개의 원소 (0 ~ 9)가 각각 독립적인 집합에 있는 상태 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] i0 123456789parent0 123456789 union(1, 2) 실행1 → 2[0..

DLL(Dynamic Link Library) 이란?

우선 라이브러리가 무엇인지 알아보자.라이브러리공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들 예시Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)C++의 표준 템플릿 라이브러리 (STL)Node.js에서 npm으로 설치한 모듈HTML의 클라이언트 사이드 조작을 단순화하는 JQuery웹에서 사용자 인터페이스 개발에 사용되는 React.js 이런 라이브러리는 언제 메인 프로그램에 연결하느냐에 따라서 Static Link와 Dynamic Link로 나뉘며, DLL은 이 중 후자를 뜻한다. 정적 라..

[Unreal Engine] Asset, Tsubclassof, CDO, staticclass

Asset : Blueprint, Sound 등Tsublclassof : 특정 클래스의 서브클래스의 타입정보CDO : 클래스의 기본 인스턴스staticclass : 메타데이터 (리플렉션) *리플렉션 : 런타임 내에서 클래스의 정보를 알게해주는것C++ 에는 없고 C#에 있는 기능이다. 그래서 엔진에 C# 파일들이 있는 것! UPROPERTY()를 붙인 변수를 엔진내에서 수정할 수 있는 것은 리플렉션 시스템 덕분.

[Unreal Engine] 프로젝트, 모듈, 플러그인 개념

프로젝트: 모듈, 플러그인 + 에셋(컨텐츠 폴더) 를 모두 포함하는 큰 단위. 모듈(Module): 헤더파일(.h) 와 실행파일 (.cpp) 를 포함하는 최소 단위모듈은 단독으로 unreal engine 에서 구성할수 없다. Plugin 또는 Project에 종속되어야 한다. 플러그인(Plug-in): 여러 모듈을 묶어서 구성할수있다.플러그인은 독자적으로 구성할수 없다.실험 적인 기능을 테스트하거나 외부 확장용으로 사용한다. 모듈과 플러그인 둘 다 uproject에서 등록을 해주어야한다. *언리얼 엔진에서 IMPLEMENT_PRIMARY_GAME_MODULE은 하나만 존재해야한다.! 없어서도 안된다.그 이후로는 IMPLEMENT_MODULE로 설정

[알고리즘/백준] 12847: 꿀 아르바이트

https://www.acmicpc.net/problem/128471. 문제 접근준수는 1~n일까지 중 연속된 m일 간 근무 할 수 있다. 이때 준수가 벌 수 있는 최대 이익을 구해야 한다.즉, n개의 수를 입력 받고 m개의 연속된 구간 합의 최댓값을 구하는 문제이다. 누적합과 슬라이딩 윈도우를 이용해 O(n)의 시간복잡도 안에 해결할 수 있다!구간합 [ A ~ B ] = 누적합[ B ] - 누적합[ A - 1 ] 2. 코드#include #include #include int main(){ std::ios::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); int n, m; std::cin >> n >> m; std::vector A(n..

알고리즘/백준 2025.05.17

[알고리즘/백준] 20922: 겹치는 건 싫어

https://www.acmicpc.net/problem/209221. 문제 접근주어진 수열 안에서 같은 원소가 K개 이하로 들어있는 부분 수열의 길이를 구하는 문제이다.정수의 최댓값을 크기로하는 배열을 만들고 0으로 초기화 한다. 이후 숫자에 해당하는 인덱스에 접근하여 원소의 개수를 체크할 수 있다. 투 포인터를 활용하여 O(N)의 시간복잡도에서 해결한다. left 와 right 를 0으로 초기화한 뒤,right의 원소가 K개 이하면 right를 1 증가시키고right의 원소가 K개를 초과한다면 left를 1 증가시키며right 가 N 이상이라면 반복문을 빠져나온다. 2. 코드#include #include int main(){ std::ios::sync_with_stdio(false); s..

알고리즘/백준 2025.05.10

[알고리즘/백준] 1431: 시리얼 번호

https://www.acmicpc.net/problem/1431 1. 문제 접근주어진 조건에 따라 시리얼 번호를 정렬해야 한다.정렬 문제는 algorithm 라이브러리의 sort 함수를 이용하여 풀 수 있다. std::sort(A.begin(), A.end(), compare); sort함수의 마지막 인자인 compare를 정의하여 문제를 해결한다. 2. 코드#include #include #include #include int cmp(std::string aString, std::string bString){ // 1.길이가 짧은 것이 먼저 const int aSize = aString.size(); const int bSize = bString.size(); if (..

알고리즘/백준 2025.05.08

[알고리즘/DP] 동적 계획법 (Dynamic Programming)

동적 계획법복잡한 문제를 여러개의 간단한 문제로 분리, 간단한 문제들을 해결해 나가 결국 최종 답을 구하는 방법.메모리를 적절히 사용해 수행 효 어떻게?1. 큰 문제를 작은 문제로 나눈다. ( 이때 점화식을 세운다.)2. 작은 문제들은 한번씩만 계산해 DP 테이블에 저장한다. -> 메모이제이션 기법  톱-다운 방식과 바텀-업 방식이 있다. 톱 - 다운 방식재귀 함수 형태로 코드를 구현.코드의 가독성이 좋고, 이해하기 편하다. 바텀 - 업 방식가장 작은 부분부터 문제를 해결하면서 큰 문제로 확장.반복문으로 구현한다. 대표 문제 : 피보나치 수열D[N] = D[N - 1] + D[N - 2]   [참고]주홍철, , 길벗(2022), p51

알고리즘/DP 2024.11.17

[알고리즘/탐색] 이진 탐색

이진 탐색이란?정렬된 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터 크기를 반씩 줄이며 탐색하는 알고리즘 시간 복잡도 : O(logN) 과정1. 중앙값을 선택한다( middleIndex = (startIndex + endIndex) / 2 )2. 중앙 값 > 타겟 일때 왼쪽 데이터셋을 선택 (endIndex = middleIndex - 1) 3. 중앙 값 startIndex  = middleIndex+ 1)4. 중앙 값 == 타겟 일때 탐색 종료  * 탐색 범위가 크다면 이진 탐색을 떠올리는 것이 좋다! 백준 : 1920https://www.acmicpc.net/problem/1920#include #include #include int isExist(const std::vector& A, int n..

알고리즘/탐색 2024.11.01