Study(30)
-
(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 -
Array vs List
Array 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스로 해당 원소에 접근이 가능하다. 그러므로 검색에는 원하는 원소의 인덱스를 알고있다면 O(1) 이다. 삽입과 삭제에는 삭제 또는 삽입을 한 후에 Shift 비용이 발생하므로 O(n) 이다. 정의와 동시에 길이를 지정하고, 바꿀 수 없다.(정적인 표현) 컴파일 시 Stack 영역에 할당된다. 장점 검색 연속적이므로 메모리 관리가 편함 단점 크기가 고정되어있기 때문에 삭제를 한 후에 shift를 하지않는다면 메모리 낭비가 생긴다. 배열의 크기를 바꿀 수 없다 List 불연속적인 메모리 공간 할당 동적인 표현 인덱스를 사용하지 않고 포인터를 통해 접근한다. 새로운 노드가 추가될 때 Heap 영역에 할당된다. 장점 삽입 삭제가 자유로움 단..
2021.05.30