백트래킹
·
알고리즘(코딩테스트)
1. 백트래킹쉽게 말해서 가능한 모든 경우의 수를 다 해보는 알고리즘이다.재귀 함수를 사용하여, 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘! 문제를 보고, 주어진 전체 배열의 크기가 크지 않을 때 사용해 볼 법한 알고리즘이다.(너무 큰 경우 시간 초과가 날 것이다) 가장 기본적인 형태로, N개 중 M개를 뽑는 문제가 존재한다.https://www.acmicpc.net/problem/15649 코드 설명기본적으로 아래와 같은 형태로 재귀함수를 구성하게 된다.isused 라는 이미 사용한 것인지를 체크하는 배열을 통해 중복을 제거하게 된다.Choose라는 함수 안에서 경우의 수를 뽑는 과정이 이루어진다.cur은 현재 뽑은 갯수가 되고, cur이 m이 되는 순간 특정 처리를 해주면 된..
온라인 게임과 네트워크 구성
·
CS
1. 온라인 게임의 종류1 - 1. 싱크동기화, 실시간, 리얼타임온라인 서버 방식과 LAN 파티 방식으로 나뉨1 - 2. 어싱크비동기  2.  CAP 이론과 게임의 동기화2 - 1. CAP 이론"분산 시스템의 동기화 조건 3개를 모두 만족하는 시스템은 없다"라는 이론2 - 2. 분산 시스템의 동기화 조건Consistency (일관성) : 전체 시스템은 동일한 상태 값을 가지고 있어야 함Availability (가용성) : 언제든지 시스템에 접근하여 값을 읽고 쓸 수 있어야 함Partition Tolerance : 시스템을 분할하여 병렬처리 등이 가능해야 함  3. 게임에서의 동기화 방법게임 동기화에서 Partition Tolerance의 부분은 절대 포기할 수 없는 부분이기 때문에 나머지 두개 중 하나를..
네트워크 개념
·
CS
1. 네트워크의 기본구성요소1 - 1. 노드네트워크의 기본 단위 (데이터를 송신하거나 수신하는 모든 장치)엔드노드와 중간 노드가 존재기능통신 : 다른 노드와의 데이터 교환라우팅 : 데이터가 최적의 경로를 찾도록 경로 선택데이터처리 : 데이터 패킷화, 패킷 분할/재조립, 오류 검사네트워크 관리 : 상태감시, 트래픽관리, 보안예시컴퓨터, 라우터, 스위치, 모바일기기 1 - 2. 링크노드 간 데이터를 전송하는 연결장치예시유선: 이더넷, 광섬유, 케이블무선: wifi, 블루투스1 - 3. 프로토콜데이터의 전송 규칙예시TCP, UDP, HTTP, HTTPS, FTP 등  2. 네트워크의 배치형태2 - 1. P2P두대의 컴퓨터를 직접 케이블로 연결함현재는 안쓴다.2 - 2. 버스1개의 케이블로 여러대의 컴퓨터 연결..
TIL day 58
·
TIL
1. 코딩테스트오늘 오전에는 챌린지반 수업에서 내준 과제를 풀었습니다.https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr더보기더보기#include #include #include using namespace std;int amount[5] = { 781, 156, 31, 6, 1 };unordered_map um;int solution(string word){ int answer = 0; um.insert({ 'A', 0 }); um.insert({ 'E', 1 }); um..
TIL day 57
·
TIL
TIL day 56은 예비군 훈련을 다녀오느라 없습니다. 1. 코딩 테스트챌린지반 수업을 통해 들은 내용 중 비트마스킹에 대한 내용이 익숙하지 않아서 관련 문제와 내용을 정리해 보았습니다.https://gbleem.tistory.com/119 비트 마스킹비트 마스킹이란 0과 1을 이용해서 연산하는 방식을 말한다.이 방식을 통해서 효율적인 연산이 가능할 때가 있다. 많이 안 써본 방식이기 때문에 관련 수업을 들은 후 내용을 정리하게 되었다.gbleem.tistory.com 비트마스킹에 대해 공부하던 중 백트래킹에 대한 내용이 있어서 이전에 풀지 못했던 백트래킹 문제를 하나 추가로 풀었습니다.https://www.acmicpc.net/problem/1182기존에 백트래킹을 통해 모든 경우의 수를 뽑을 때는 ..
비트 마스킹
·
알고리즘(코딩테스트)
비트 마스킹이란 0과 1을 이용해서 연산하는 방식을 말한다.이 방식을 통해서 효율적인 연산이 가능할 때가 있다. 많이 안 써본 방식이기 때문에 관련 수업을 들은 후 내용을 정리하게 되었다.추가적으로 아래 글을 참고해서 정리해 보았다.https://blog.encrypted.gg/1093 [실전 알고리즘] 부록 C - 비트마스킹네 반갑습니다. 이번 부록 C에서는 비트마스킹을 다뤄보겠습니다.  이번 강의에서는 간단하게 비트 연산자들을 살펴보고 비트마스킹을 익힌 후에 문제를 같이 풀어볼 예정입니다. 이것도 다른blog.encrypted.gg  1. 비트 연산자0은 false 1은 true를 뜻한다.AND (둘다 참인 경우 참)0 & 0 = 00 & 1 = 01 & 1 = 1OR (둘중 하나만 참이어도 참)0 ..
TIL day 55
·
TIL
1. 코딩 테스트오늘 오전에는 그래프 관련 공부를 진행하였습니다. 그래프 관련 문제들 중에서 bfs 관련 문제는 많이 풀어봐서 익숙했지만, dfs 관련 내용이 부족하다고 느껴져서 해당 부분 공부를 집중적으로 진행하고 관련 내용을 정리해 보았습니다. 특히, 비재귀 형태로 구현한 dfs를 올바를 순서로 탐색하도록 하는 방식을 잘 기억해야할 것 같습니다.  https://gbleem.tistory.com/117 그래프 (재귀, 비재귀 DFS)1. 그래프의 특징과 종류방향이 있는 그래프 가중치가 있는 그래프 순환이 있는 그래프  2. 그래프 구현2 - 1. 인접 행렬을 이용한 그래프배열의 인덱스는 노드세로 방향 출발 노드가로 방향 도gbleem.tistory.com 추가로 백준에서 관련 문제를 하나 풀었습니다...
그래프 (재귀, 비재귀 DFS)
·
알고리즘(코딩테스트)
1. 그래프의 특징과 종류방향이 있는 그래프 가중치가 있는 그래프 순환이 있는 그래프  2. 그래프 구현2 - 1. 인접 행렬을 이용한 그래프배열의 인덱스는 노드세로 방향 출발 노드가로 방향 도착 노드배열의 값은 노드의 가중치 2 - 2. 인접 리스트를 이용한 그래프  결론인접 행렬크기가 고정되어 있기 때문에 노드가 많고 연결이 적은 그래프에서 낭비가 심한 단점이 있다.간선의 정보를 O(1)에 얻을 수 있는 장점이 존재인접 리스트대부분의 경우 인접 행렬에 비해 메모리를 절약할 수 있다.평균적으로 간선의 정보를 얻는데 시간이 좀 더 걸림  3. 그래프 탐색3 - 1. BFS최단 경로를 보장하는 탐색 방식queue를 사용한다.방문 처리를 queue에 push할때 진행한다.#include #include #i..
TIL day 54 (ch3 팀 프로젝트 종료)
·
TIL
UE5 C++ 슈터 게임 프로젝트 성공적으로 마무리 하였습니다. 대략 3주의 기간동안 열심히 개발했는데, 많은 사람들이 좋은 평가를 해주셔서 보람찬 프로젝트였습니다.또한, 개발하면서 개인적으로도 많이 성장할 수 있었던 것 같고, 협업관련해서도 많은 것을 배울 수 있었습니다. 좋았던 점언리얼 C++에 익숙해 질 수 있는 계기였고, 언리얼 엔진 자체(함수나 여러 기능 들)에도 익숙해 질 수 있었습니다.게임을 플레이하면서 꼭 한번 구현해 보고 싶은 것들을 구현해 볼 수 있어서 의미가 있었습니다.다양한 총기 (배율달린 SR, 반동 시스템)모션 매칭을 이용한 애니메이션게임 내 캐릭터를 담당했기에, 다른 부분 (아이템, 총기, UI 등)과 연동하면서 구현하게 되었는데 이쪽을 구현하면서 게임의 전반적인 구조에 대해 ..
Unreal Engine - Main Menu (흐름 위주의 정리)
·
Unreal Engine
이전에 관련 글을 정리했었는데, 다시 구현하면서 보니 조금 이해가 안되는 부분이 중간 중간에 있어서 흐름 위주로 다시 글을 정리해보았다. 이전 글https://gbleem.tistory.com/79 Unreal Engine - Main Menu UI (Start, Restart)1. 디자이너 탭 구성아래와 같은 계층구조로 구성  2. Menu  전용 맵게임이 시작하면 Menu Level에서 위에서 만든 UI가 실행된 후 Start 버튼을 누르면 게임이 시작되는 로직으로 제작할 것이다.새로gbleem.tistory.com 1. 메뉴용 맵과 WBP메뉴의 바탕이 될 레벨을 하나 만들고위젯 BP를 만들어서 게임 시작 버튼을 만들면 된다. 이후 Default 레벨을 해당 레벨로 지정하면 된다. 1. UI 만들기 ..