전체 글 524

프로그래머스 LV.2 튜플

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr #include #include #include #include using namespace std;bool cmp (pair& a, pair& b){ if(a.second == b.second) return a.first > b.first; return a.second > b.second;}vector solution(string s) { vector answer; map m; string temp = "..

2D RPG - 콤보 공격 만들기

복잡한 상태를 하위 계층 구조로 나누어 관리할 수 있는 sub state machine을 사용하여 콤보 공격을 구현하였다. 콤보 공격에 사용된 sub state machine의 내부 구조는 다음과 같다. 이런식으로 인덱스가 같으면 다음 인덱스로 넘어가게끔 한 것이다. 아래는 콤보 구현 방식 코드이다.using UnityEngine;public class Player_BasicAttackState : EntityState{ private float attackVelocityTimer; private const int FirstComboIndex = 1; private int comboIndex = 1; private int comboLimit = 3; public Player_B..

Unity 2026.01.07

DX - CPU에서 계산된 정보를 GPU로 넘기는 방법

void Game::Update(){ D3D11_MAPPED_SUBRESOURCE subResource; ZeroMemory(&subResource, sizeof(subResource)); _deviceContext->Map(_constantBuffer.Get(), 0, D3D11_MAP_WRITE, 0, &subResource); ::memcpy(subResource.pData, &_transformData, sizeof(_transformData)); _deviceContext->Unmap(_constantBuffer.Get(), 0);} 이 코드가 의미하는 바를 렌더링 파이프라인 관점에서 풀어보면Map / Unmap은 “Central Processing Unit가 쓸 수 있게 잠깐 문 열어주는 것”..

그래픽스/DX11 2025.12.18

StringBuilder

문자열의 리스트가 주어졌을 때 이 문자열들을 하나로 이어붙이려고 한다.이떄의 수행 시간은 어떻게 되는가?문제를 간단히 하기 위해 모든 문자열의 길이를 x라 하자.같은 n개의 문자열이 주어졌다고 가정해보자. 문자열을 이어붙일 때마다 두 개의 문자열을 읽어 들인 뒤 문자를 하나하나 새로운 문자열에 복사해야 한다.처음에는 x개, 두 번쨰는 2x개, 세 번째는 3x개 n번 쨰는 nx개의 문자열을 복사해야 한다. 따라서 총 수행 시간은 O(x + 2x + 3x + ... + nx)즉, O(xn^2)이 된다. StringBuilder는 이 문제를 해결해 줄 수 있다.StringBuilder는 단순하게 가변 크기 배열을 사용하여 필요한 경우에만 문자열을 복사하게끔 해준다. 문자열, 배열, 일반적인 자료구조를 연습해 ..

BFS DFS 구현하기

#include #include #include #include #include #include #include using namespace std;template struct Edge{ unsigned src; unsigned dst; T weight;};template class Graph{public: // N개의 정점으로 구성된 그래프 Graph(unsigned N) : V(N) {} // 그래프의 정점 개수 반환 auto vertices() const { return V; } // 전체 에지 리스트 반환 auto& edges() const { reuturn edge_list; } // 정점 v에서 나가는 모든 에지를 반환 auto edges(unsigned v) const { vector> ..

BST 복습

BST란? 이진 검색 트리는 널리 사용되는 형태의 이진 트리이다.BST는 다음과 같은 속성이 있다. 부모 노드의 값 >= 왼쪽 자식 노드의 값부모 노드의 값 즉, 왼쪽 노드 를 가진다. 이러한 관계식은 재미난 특징이 있는데,부모 노드보다 적거나 같은 모든 원소는 항상 왼쪽에 있고,부모 노드보다 크거나 같은 원소는 항상 오른쪽에 있게 된다.따라서 원소 검색을 위해 루트 노드부터 차례대로 값을 비교하는 경우, 각 단계마다 검색 범위가 절반으로 줄어든다. BST가 마지막 레벨을 제외한 모든 노드에 두 개의 자식 노드가 있을 경우,이 트리의 높이는 lon2N이 된다.여기서 N은 원소의 개수를 나타낸다.이로 인해 BST의 검색 및 삽입 동작은 O(log N)의 시간 복잡도를 가지게 된다.이러한 형태의 이진 트리..