728x90
728x90
반복문 for, while, 재귀 유니티 게임 개발 뿐만 아니라, 알고리즘 테스트부터 개발 전체는 반복문의 연속으로 이루어져있다고 봐도 무방하다. 반복문에 대해 공부했던 내용을 간단히 정리해보겠다. 가장 대표적인 반복문인 for문은 ~에서 ~까지(한정되어 있음)를 의미한다. 작성 방법은 for(초깃값 설정; 조건식; 증감) {할 것} 으로 초깃값 설정 -> 조건식 -> 할것 -> 증감 -> 조건식...(반복)으로 실행 순서가 정해진다. for문에서 보통 증감식 부분은 i++ 또는 ++i로 작성한다. 여기서 i++과 ++i 차이를 많이 헷갈려 하는데 다음과 같다. 1) i++의 경우 다음 조건식에서 결과를 볼 수 있지만 ++i는 바로 결과를 확인할 수 있다. 2) 속도가 ++i가 더 빠름, 내부적으로 i+..
전역변수 & 지역변수 C# 스크립트 작성 시 클래스 안에 다양한 변수를 설정한다. 하지만 때때로 함수가 변수들을 읽지 못해 유니티 에디터에서 컴파일 에러가 뜨기도 하고, 이상한 버그들도 발생하곤 한다. 개발할 때 매우 기본이 되는 내용이지만 오히려 모르고 넘어가는 경우가 많기에 때문에, 전역변수와 지역변수에 대해 기본적인 개념을 꼼꼼히 짚어보도록 하겠다. 먼저, 한 클래스 안에서 동일한 이름의 지역/전역 변수가 존재한다면 지역 변수가 전역 변수보다 먼지 인지된다. 그리고 전역 변수는 지역 변수를 모르지만, 지역 변수는 전역 변수를 알고 있다. 이는 컴파일러 실행과 관련되어 설명할 수 있는데 우리가 유니티 에디터에서 플레이 버튼을 누르면 컴파일러는 "코드 -> static(정적 메모리 공간) -> stac..
void TestFunc() { } void TestFunc(float a) { } void TestFunc(float a, float b) { } TestFunc(); TestFunc(10); TestFunc(10, 200); 함수의 오버로딩과 관련하여 디폴트 값인 TestFunc()와 매개변수 인자값을 넣어준 함수들을 다음과 같이 실행할 수 있다. 하지만 이런 경우, TestFunc() 함수의 파라미터 값이 안맞기 때문에 오류가 생긴다. 이럴 때는 파라미터에 인자 값을 할당해주므로서 오류를 해결할 수 있다. TestFunc() 함수는 기본적으로 float a = 0 과 float b = 10 이라는 인자 값을 가지게 되고, TestFunc(10)을 호출하면 float a = 10, float b = ..
그래프 - G = (V, E) - 정점(Vertex) : 노드 - 간선(Edge) : 정점끼리 연결 선 - 그래프의 종류 순환 그래프 비순환 그래프 - 가중치 그래프 - 그래프의 표현 : 인접 리스트 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Listgraph { class Program { static void Main(string[] args) { Console.WriteLine("그래프"); Graph gr = new Graph(); var v1 = gr.AddVertex("서울"); var v2 = gr.AddVert..
트리(Tree)란? 자료 간의 관계가 계층 구조일 때 사용하는 비선형 자료구조이다. - 트리는 노드(node)로 이루어진 자료구조 - 트리는 하나의 루트 노드를 갖는다. - 루트 노드는 -개 이사의 자식 노드를 갖고 있다. - 그 자식 노드 또한 0개 이상의 자식 노드를 갖고 있고, 이는 반복적으로 정의된다. 트리(Tree)와 관련된 용어 부모 노드 & 자식 노드 = 서브 트리 같은 레벨 간 노드들 = 형제 노드 트리(Tree)의 특징 - 그래프의 한 종류이다. '최소 연결 트리'라고도 불린다. - 트리는 계층 모델이다. - 트리는 DAG(Directed Acycle Graphs, 방향성이 있는 비순환 그래프)의 한 종류이다. - 노드가 N개인 트리는 항상 N-1개의 간선(edge)을 가진다. - 루트에..
힙정렬(Heap sort)이란? 힙은 완전 이진 트리 구조를 가진 자료구조이다. 이 힙의 특성을 이용하여 정렬하는 것이 힙정렬(Heap sort)이다. - 최소값 혹은 최대값을 빠르게 가져오기 위해 고안됨. - 형제노드 사이에서는 아무런 대소 관계가 정해져 있지 않음. public void SortHeap() { int[] nArrData = { 20, 35, 15, 5, 40, 10, 25, 30 }; for (int i = (nArrData.Length - 1)/2; i >= 0; --i) { CalcHeap(nArrData, i, nArrData.Length); } for(int i = nArrData.Length - 1; i>0; --i) { SwapHeap(ref nArrData[i], ref ..