전체 글(37)
-
해시 (Hash)
해시(Hash)는 주어진 입력 데이터를 고정된 크기의 값으로 계산하는 프로세스이다. 해당 프로세스를 실제로 수행하는 함수를 우리는 해시 함수(Hash Function)라고 부르며 그렇게 도출된 값을 해시 값(Hash Value) 또는 해시 코드(Hash Code)라고 이야기한다. 해시 함수에 의하여 계산된 주소 위치에 데이터를 저장하는 자료구조는 해시 테이블(Hash Table)이라고 한다. Index Key Value 0 데이먼 500 1 잭슨 350 2 로이드 800 - 해시 테이블 - 간혹, 해시(Hash)와 해싱(Hashing)을 동일하게 보는 경우가 있는데 둘은 서로 다른 개념을 나타낸다. 해싱(Hashing)은 해시를 실제로 수행하는 행위나 프로세스를 가리키는 것으로 데이터를 해시 함수에 제공..
2024.03.28 -
[ C# ] 메서드 매개 변수 ref, in, out
우리가 함수를 사용하다 보면 여러 클래스의 객체들을 이용하여 계산하거나 처리하는 경우가 많다. 그때 함수에 전달하는 변수(인수)들을 우리는 매개 변수라고 이야기 한다. 매개 변수들을 전달하는 방식은 크게 값에 의한 전달과 참조에 의한 전달로 나눌 수 있으며 기본적으로 함수에 전달되는 인수들은 값에 의한 전달 형식이다. 값에 의한 전달은 원본 변수의 값을 복사하여 해당 메소드들에게 넘기는 것을 의미하는데, 말 그대로 복사하여 전달하기 때문에 메소드에서 처리한 값이 원본 데이터에게 영향을 미치지 않는다. 그러나 참조에 의한 전달 방식은 원본 데이터의 주소(참조)를 해당 메소드에게 넘기는 것으로 메소드에서 처리된 값들은 그대로 원본 데이터에게 영향을 미친다. 우리가 주로 사용하는 클래스와 같은 경우는 참조에 ..
2024.03.27 -
[ C# ] 정렬 _ 1
우리는 원하는 데이터를 빠르게 탐색할 때, 정렬을 사용한다. 만약 데이터가 정렬되지 않았다면 일일히 순차적으로 탐색해야 하지만 정렬된 데이터의 경우 이진 트리 탐색 알고리즘을 이용하여 쉽게 탐색할 수 있다. 이진 트리 탐색 비교하고자 하는 값보다 크면 오른쪽, 작으면 왼쪽으로 이동하며 원하는 값이 나타날때까지 탐색하는 방식 정렬 알고리즘_기초편 1. 버블 정렬 가장 쉽지만 최악의 효율성을 가지고 있는 알고리즘. 전체 배열을 순회하면서 항목이 다른 항목보다 큰 경우 두 항목의 위치를 교환한다. (인접한 두개의 항목을 비교) 도중에 정렬이 완료되었어도 모든 배열을 순회할때까지 종료되지 않는다. 구현 형식 int[] BubbleSort(int[] array) { //배열의 모든 요소를 탐색 for(int i=..
2024.03.27 -
[ C# ] 플레이어 인벤토리 구현
구현 목록 1. 캐릭터의 일반 인벤토리 생성 캐릭터가 게임을 진행 중에 얻은 아이템을 저장하는 공간을 제작. Dictionary를 사용하여 아이템의 타입을 분류. 아이템 타입 : 소모품, 무기, 방어구 이미 가지고 있는 아이템을 주우면 새롭게 추가(Add)되는 것이 아닌 개수(count)를 조정. 만약 가지고 있지 않은 아이템을 주우면 새로 추가(Add) 포션을 사용하면 지정된 수치만큼 캐릭터의 HP를 증가. 무기와 방어구를 지정하고 사용하면 장비 인벤토리에서 장착, 또는 해제되도록 설정 2. 캐릭터의 착용 장비 인벤토리 생성 캐릭터가 장비를 착용하면 해당 장비를 저장하는 공간을 제작. Dictionary를 이용하여 아이템의 착용 부위를 분류. 분류 타입 : 무기, 머리, 갑옷, 다리 해당 부위에 장비를..
2024.03.16 -
이진 트리(Binary Tree)
트리 구조 (Tree) 한 노드에서 시작해서 다른 정점들을 순회하여 자기 자신에게 돌아오는 순환이 없는 자료 구조. (출처 : https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EA%B5%AC%EC%A1%B0) 계층적인 자료를 나타내는데, 자주 사용되는 자료구조로써 비선형적인 구조를 가지고 있으며 대칭적인 구조를 가지고 있다. 부모 노드가 여러 자식 노드들을 가질 수 있는 1대 多(다) 구조이다. [구성 요소] 뿌리 (root) 부모 노드가 없는 최상위 노드, 트리의 깊이 0 에 속하며 오직 하나만 존재한다. 부모 노드 루트 노드 방향으로 직접 연결된 노드 자식 노드 루트 노드 반대 방향으로 직접 연결된 노드 가지 (branch) 부모 노드와 자식 노드가 모두 있는..
2024.03.14 -
[ C# ] 리스트(List)
Index 번호로 접근할 수 있는 강력한 형식의 개체 목록. 동적 배열의 형태를 띄고 있어 데이터가 삽입/감소되면 자동으로 용량을 증감한다. (크기는 자동적으로 2배씩 증가된다.) C++의 리스트와는 다른 구조를 가지고 있다. C++ List : Double Linked List 형식 양방향 노드 기반의 데이터 연결 구조이다. [노드] [구성 형식] [삭제] 값이 제거되면 이전 노드의 [다음 노드를 가리키는 포인터]가 다음 노드의 [이전 노드를 가리키는 포인터]와 연결된다. [삽입] 값이 추가되면 추가되는 노드의 [이전 노드를 가리키는 포인터]는 이전 노드와, [다음 노드를 가리키는 포인터]는 다음 노드와 연결된다. 장점 : 요소의 삽입/ 제거가 빠르다. 단점 : 양방향으로 연결되어 있어 탐색이 느리다...
2024.03.13