최단 경로 구하기 (다익스트라, 벨만-포드)
·
알고리즘(코딩테스트)
1. 다익스트라 알고리즘가중치가 있는 그래프의 최단경로를 구할 때 사용하는 알고리즘 다익스트라 알고리즘의 동작 방식은모든 노드의 최소 비용을 INF로 초기화한다.시작한 노드의 최소비용은 0, 직전 노드는 자기 자신으로 두고 시작이후 최소 비용이 가장 낮으면서 방문하지 않은 노드를 선택하여 최소 비용을 업데이트 한다.아래의 그림을 통해 어떤 방식으로 동작하는지 알 수 있다.최소 비용이 가장 낮은 A로 시작하여 모든 연결된 노드의 최소비용을 갱신 (A 방문)이후 최소비용이 가장 낮은 E노드를 시작으로 더 작은 최소비용이 되는 경로가 있다면 갱신 A->E->C가 기존의 A->C 보다 최소비용이 작으므로 갱신! (E 방문)이 방식을 모든 노드 방문할 때 까지 반복하기결과우리가 C까지의 경로를 알고 싶다면, C의..
Unreal Engine - Standalone을 리슨 서버로 확장하기
·
Unreal Engine
1. Standalone 게임아주 간단한 게임 로직을 하나 구성했다. Goal 이라는 액터가 존재하고, 해당 액터에 플레이어가 닿으면 UserName과 WIN! 이라는 문구를 띄워주는 게임이다. 로직 설명GameMode에서 Goal Actor를 하나 Spawn 해준다.Goal 이라는 Actor에 Character가 overlap된 순간 PlayerController의 EndGame이라는 Event call해준다.GameMode의 EndGame 함수는 PlayerController를 찾아서 PlayerController의 EndGame 이벤트를 call한다.PlayerController에서는 Widget을 만들어주고 Widget의 EndGame 함수를 call해준다. 이후 add to viewport 해준..
Unreal Engine - Gameplay Framework
·
Unreal Engine
Gameplay Frameworkhttps://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-framework-in-unreal-engine 네트워크https://cedric-neukirchen.net/docs/multiplayer-compendium/framework-and-network/
Unreal Engine - UObject
·
Unreal Engine
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/objects-in-unreal-engine 1. UCLASS 매크로언리얼에는 게임 오브젝트를 처리하기 위한 시스템이 존재한다.언리얼엔진은 UObject에서 파생된 클래스에 UCLASS 매크로를 붙여 통해 게임 오브젝트 처리 시스템이 인식할 수 있도록 한다. 그 결과 언리얼 엔진의 GC, Reflection 등의 시스템을 사용할 수 있게 된다. 추가적으로 UObject의 함수나 변수 또한 매크로를 통해 언리얼 엔진이 인식할 수 있게 해줄 수 있다.UPROPERTY()UFUNCTION() 참고 글)https://gbleem.tistory.com/35 Unreal Property System (Refl..
TIL day 65
·
TIL
1. 코딩테스트오늘 오전에는 오랜만에 다시 프로그래머스 level 2 디펜스 게임 문제를 풀었습니다.https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr처음에는 DP로 풀어야 할까 라는 생각을 했었는데, 배열의 크기가 너무 커져서 해결할 수 없었습니다.아이디어를 내지 못해서 결국 힌트를 보고 heap을 써야한다는 것을 알게 되어 풀었습니다.더보기#include #include #include #include using namespace std;priority_queue pq; //무적권 사용할 ..
OS & CS 몇 가지
·
CS
1. PCBPCB (프로세스 제어 블록)란빠르게 번갈아 수행되는 프로세스 관리를 위해 사용하는 자료구조프로세스 관련 정보를 저장하고프로세스 생성 시 커널 영역에 생성된 후, 프로세스 종료 시 폐기된다.PCB가 가지는 정보PID (프로세스 ID) : 프로세스 식별 번호레지스터 값 : 마지막으로 연산한 곳을 기억하기 위한 값프로세스 상태 : 현재 프로세스의 상태 (입출력 대기, CPU 사용을 위해 대기, CPU 사용 등)CPU 스케줄링 정보 : 할당 순서에 대한 정보메모리 정보 : 프로세스가 저장된 곳의 정보 (페이지 테이블 정보)사용한 파일과 입출력 장치 정보  2. 프로세스의 메모리 영역코드 영역실행할 수 있는 코드CPU가 실행할 명령어가 담겨있다.정적 할당 영역데이터 영역프로그램이 실행되는 동안 유지할..
정렬 및 탐색 알고리즘 정리
·
알고리즘(코딩테스트)
1. 정렬 알고리즘1 - 1. 버블정렬배열에서 두개의 원소 선택하고 비교 후, 왼쪽 원소가 오른쪽 원소보다 큰 경우 swap 한다.시간 복잡도는 O(N^2), 공간 복잡도는 O(1)만약 아래 코드에서 swap이 발생하지 않는 경우 break하는 코드를 넣으면, 정렬된 경우 시간 복잡도를 O(N)으로 줄일 수 있다.더보기#include #include using namespace std;int main(){ vector vec = { 4,6,2,9,1 }; for (int i = 0; i vec[j + 1]) swap(vec[j], vec[j + 1]); } } for (const auto v : vec) cout  1 - 2. 선택 정렬배열의 한가지 값을 선택하고, 자신을 제외한 나머지 값들과..
TIL day 64
·
TIL
이번주 월화수목 예비군을 다녀왔습니다. 1. 코딩테스트오전에 챌린지반 과제 및 밀린 문제들을 해결했습니다. 1 - 1. N-Queen 다시 풀기N-Queen 문제에 있어서 갯수만 출력하는 것이 아니라 해당 위치를 출력하는 것이 과제이다.Choose함수에서 cur 변수가 x값(row) i 변수가 y값(col) 인 것을 생각하면 쉽게 해결할 수 있다.주의할 점은 board 벡터를 초기화 해주고 사용해야 하므로, resize(n, vector (n,0)); 코드가 필요하다.더보기//n queen#include #include using namespace std;int n;int isused1[20];int isused2[40];int isused3[40];vector> board;void printBoard(..
TIL day 59
·
TIL
1. 코딩테스트오늘 오전에는 비트마스킹 관련 공부를 하다가 정리해보고 싶은 백트래킹에 대한 공부와 문제를 풀었습니다.https://gbleem.tistory.com/124 백트래킹1. 백트래킹쉽게 말해서 가능한 모든 경우의 수를 다 해보는 알고리즘이다.재귀 함수를 사용하여, 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘! 문제를 보고, 주어진gbleem.tistory.com  2. 언리얼 멀티플레이언리얼 멀티플레이 관련 강의를 듣고, 리슨서버를 사용한 채팅 서버 만들기 실습을 해보았습니다.https://gbleem.tistory.com/125 Unreal Engine - 채팅 (리슨 서버)1. 필요한 것1 - 1. Level과 Level BP빈 레벨이 필요빈 레벨 BP에서는 아래 두..
Unreal Engine - 채팅 (리슨 서버)
·
Unreal Engine
1. 필요한 것1 - 1. Level과 Level BP빈 레벨이 필요빈 레벨 BP에서는 아래 두가지 동작을 하게 된다.widget BP를 Add To Viewport 하기server인지 체크 후, On Log In with ID 라는 이벤트(PlayerController가 가지고있음) 실행1 - 2. GameModeGot Message From Client 라는 이벤트를 가진다. (리플리케이트 : 서버에서 실행 / 신뢰성 true)PlayerController를 상속받아 만들어진 actor를 모두 찾은 후우리가 만든 PlayerController로 cast 후Got Broad Cast 이벤트(PlayerController가 가지고 있음)를 호출한다.1 - 3. PlayerControllerBeginPla..