< '2025/01 글 목록

2025/01 7

[C++ / 백준 2529번] 부등호

재귀, 백트래킹 을 이용하여 풀이했다.next_permutation을 사용하면 더 빨리 풀 수 있을 것 같다. 시간 복잡도가 다르기 때문에. 범위는 항상 조심하자.  #include #include #include #include using namespace std;int k[12];long long MinNum = 9999999999;long long MaxNum = -1;vector PermuVec;int visited[10] = { false };int N;bool checkCondition(vector inputVec){ for (int i = 0; i PermuVec[i+1]) { return false; } if (k[i] ==..

[UNSEEN 테스트 대비] 게임에서의 벡터, 행렬, 내적, 외적의 활용, 회전의 표현

벡터 (Vector)크기와 방향을 가진 양을 나타내는 수학적 개념스칼라(Scalar)크기만을 가지고 방향이 없는 양을 의미벡터와 반대되는 개념으로 단순히 크기만을 가지고 있다.벡터의 정규화해당 벡터의 크기를 1로 만들어주는 과정벡터의 크기가 1이 되면 방향은 유지한 채 크기를 표준화 할 수 있다방향 벡터, 단위 벡터라고도 불린다.게임 개발에서 벡터는 다양한 용도로 사용되는데, 주로 위치, 방향, 속도 등을 나타내기 위해 사용됩니다.힘의 크기 (Magnitude)힘의 방향 (Direction) 벡터의 내적A⊙B = |A||B| Cosθθ 는 A와 B 벡터의 사이각이다.두 단위 벡터가 평행하면 절대값은 1이다. (같은 방향이거나, 반대 방향)  두 벡터 사이각은 내적공식을 통해 구할 수 있다. 1. 시야 판..

[UNSEEN 테스트 대비] A* 길찾기, FSM, 비헤이비어트리, Quadtree 공간 분할

쿼드 트리(Quad Tree)트리의 자식 노드가 4개인 트리를 의미한다.공간을 재귀적인 호출로 4개의 자식 노드로 분할하는 방법게임에서는 일반적으로 지형 정보를 저장하는 데 사용된다.컬링을 위한 지형 검색에 쿼드 트리를 사용한다. (컬링 : 렌더링에 필요하지 않은 오브젝트들을 추려 내는 것)-> 쿼드 트리를 이용하면 필요 없는 데이터를 큰 덩어리 단위로 버릴 수 있게 되므로 거대한 지형을 빠르게 검색할 수 있기 때문이다.   FSM(Finite State Machine)유한 상태 머신이라고도 한다.유한 상태 머신은 자신이 취할 수 있는 유한한 갯수의 상태들을 가진다.그리고 그 중에서 반드시 하나의 상태만 취한다. (상태 중복을 피할 수 있다.)현재 상태는 특정 조건이 되면 다른 상태로 변할 수 있다.유한..

[C++ / 백준 14889번] (재귀 / 비트마스크) 스타트와 링크

재귀는 항상 어려운 것 같다. 이해도 이해지만 이 풀이 방식을 기억해 놓는 것도 좋을 것 같다. 다 풀어놓고 실수 한 점은 팀이 3,3 으로 나뉘었을 때 (0,1) (0,2) (1,2) 등등 모든 순서쌍을 고려 해야 하는데 그러지 않았다. 모든 순서쌍을 더할 수 있는 코드로 고치니 풀이에 성공했다. vector find, 조합, 백트래킹, DFS 를 통해 풀이했다.  재귀 풀이#include #include #include using namespace std;int N;int mindiff = 99999999;int arr[20][20];int ans[10];vector v1, v2;int cal(vector v) { int sum = 0; for (int i = 0; i = N / 2) ..

[UNSEEN 테스트 대비] Map, Unordered_map, list, vector, array 동작원리

벡터(Vector) 동적 배열 구조(런타임에 임의로 크기 조절 가능), 배열과 같이 연속된 자료구조이므로 캐시 친화적이다.메모리에 데이터가 연속적으로 위치한다.벡터의 메모리 할당 방식은 size(실제 사용 메모리 크기) 와 capacity(여유분 포함 메모리 크기) 로 이루어진다. (항상 size 임의접근반복자(random access iterator)를 사용하므로 배열의 원소에 즉시 접근 가능하다. (반복자를 5가지를 알아두면 도움이 된다)emplace를 하면 복제 과정 없이 바로 원소를 삽입할 수 있어서 push_back보다 비용이 절감된다.벡터에 데이터를 삽입할 때, 할당된 공간이 전부 차면 배열을 통째로 복사해 새로운 벡터에 할당하는 방식으로 메모리 크기를 늘린다. 때문에 벡터의 메모리를 적게 할..

[UNSEEN 테스트 대비] 객체지향 프로그래밍 특징, C++ 프로그래밍, 메모리(힙과 스택)

객체 지향 프로그래밍의 특징 객체 지향  프로그래밍이란?- 프로그램 설계 시 프로그램을 수많은 객체로 나누고 이 객체들의 상호작용으로 서술하는 방법. 객체지향의 장점- 코드 재사용이 용이함. 클래스를 기능별로 분할하였기에 모듈화도 용이하고 상속을 통해 높은 확장성을 가질 수 있다. 객체를 만들어두면 재사용할 수 있다. 그렇기 때문에 유지보수성 또한 뛰어나다. (게임은 늘 갈아엎고 뒤집히는 경우가 많기 때문에 유지보수성에 특히 민감하다) 객체지향의 특징 캡슐화(encapsulation) - 클래스를 통해 변수와 함수를 하나의 단위로 묶는다. 하나의 기능을 하는 요소들을 모두 한 캡슐에 모아둔 것 같다고 하여 캡슐화이다. 같은 역할을 하는 변수, 함수들을 모아두었기 때문에 의존성, 커플링이 줄어든다. 그로 ..