분류 전체보기(51)
-
Garbage Collection (GC)
메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 즉, 동적 할당된 메모리 영역 가운데 어떤 변수도 가리키지 않는 메모리 영역을 탐지하여 자동으로 해제하는 기법이다. 기본적으로 C#은 메모리를 자동적으로 관리 해준다. C# 메모리 구조 : https://everyday-devup.tistory.com/10?category=934756 [Unity] C#에서의 메모리 * Heap ▶ 위치가 정해져 있지 않고 용량이 큰 대신 느림 ▶ 참조 타입 ( ex class, string, object ) ▶ 변수 선언 시 데이터가 저장되어있는 메모리를 가리키게 됨 * Stack ▶ 정렬되어 있고 빠르지만 사 everyday-devup.tistory.c..
2021.06.01 -
(C#) Coroutine
Coroutine : 일반적인 함수는 하나의 프레임에서 모두 실행되고 종료됩니다. 그렇기 때문에 FadeOut같은 여러 프레임에 걸쳐서 실행되어야하는 기능에는 어려움이 있다. Update를 사용하면 되지만 프레임 단위이므로 원하는 시간에 정확히 실행시키기 쉽지 않고, 매 프레임마다 실행되는 것을 원하지않는다면 비효율적일 것이다. Coroutine은 Unity에게서 제어권을 넘겨받아 실행하던 도중에, 함수의 끝에 도달하지 않았더라도 실행을 멈추고 제어권을 넘겨줄 수 있다(yield return ). 게임을 개발하다보면 일정간격마다 또는 어떤 시점에 원하는 동작을 발생시키고 싶을 때가 있습니다. 예를 들어 1초마다 총알을 발사합니다. 또는 x축으로 원하는 만큼 움직이고 끝이 나면, y축으로 움직이고 끝이 나..
2021.05.31 -
(C#) Virtual / Abstract / Interface
Virtual 과 Abstract는 거의 비슷하다. virtual method는 선택적으로 파생 클래스에서 override 할 수 있습니다. abstract method는 무조건적으로 파생 클래스에서 메서드를 override 해야 합니다. overriding이 선택적이기 때문에 virtual method는 무조건적으로 본문을 선언해야 하고, 무조건적으로 override하기 때문에 abstract method는 본문을 선언할 수 없습니다. 또한 abstract class는 인스턴스화할 수 없습니다. (어찌보면 메소드의 본문을 선언할 수 없기에 당연한 것이다.) Interface는 Abstract와 본문을 선언하지 못한다는 점에서 유사합니다. 하지만 멤버필드를 사용할 수 없습니다.(프로퍼티는 사용가능하다.)..
2021.05.31 -
Graph
정점과 간선으로 이루어진 자료구조 (cf. 트리는 사이클이 없는 그래프이다) 정점(V) : 노드라고도 하며, 데이터가 저장된다. 간선(E) : 링크라고도 하며, 노드 간의 관계를 나타낸다. 차수(D) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수 구현 방법 인접 행렬 그래프의 노드를 2차원 배열로 만든 것 노드에 다른 노드들이 인접 정점이라면 1 아니면 0 장점 구현이 편리하다 연결 정보를 조회할 때 O(1)의 시간이 걸린다 단점 정보를 입력할 때 O(n^2)의 시간이 걸린다. 필요이상의 공간이 낭비된다. 인접 리스트 그래프의 노드들을 리스트로 표현한 것 장점 연결 정보를 탐색할 때 O(N(E))의 시간이 걸린다. 공간 낭비가 적다. O(E+V) 단점 연결 정보를 조회할 때 시간이 오래 걸림 구현..
2021.05.30 -
Tree
트리는 스택이나 큐 같은 선형 구조가 아닌 비선형 자료구조이다. 계층적 관계를 표현한다. 삽입 삭제 같은 사고보다는 자료구조 자체로 바라보는 것이 좋다. Binary Tree 자식 노드가 최대 두 개인 노드들로 구성된 트리 층별로 level을 표현하고 최고레벨을 height라 한다. 포화 이진 트리(Perfect Binary Tree) 모든 레벨이 꽉 찬 이진트리 완전 이진 트리(Complete Binary Tree) 왼쪽부터 차례로 채워져 있는 이진트리 이진 힙(Binary Heap) Max Heap 각 노드의 값이 해당 children 보다 크거나 같음 최대값을 찾을 때 O(1) Min Heap 각 노드의 값이 해당 children 보다 작거나 같음 최소값을 찾을 때 O(1) 삽입 삭제? 정 이진 트..
2021.05.30 -
Stack / Queue
공통적으로 선형 자로구조이다 Stack LIFO top을 통해서만 접근이 가능하다. 비어있는 스택에서 원소를 추출하려고 할 때 stack underflow라고 하고 스택이 넘치는 경우 stack overflow라고 한다. 괄호 문제 해결 역순 문자열 DFS Queue FIFO 삽입은 rear에서 이루어진다. Enqueue 삭제는 front에서 일어난다. Dequeue 가장 첫 원소와 끝 원소를 통해 접근이 가능하다. BFS Cache
2021.05.30