전체 글 37

[C#] 소숫점 반올림, 올림, 내림 (Mathf.Round /Mathf.Ceil / Mathf.Floor)

A* 알고리즘에 대해 공부하던 중 "노드 사이즈/그리드 사이즈"를 하게 되면서기준으로 삼은 맵에 노드를 배치해야 할 때 어느정도를 배치해야 하는지 알 필요가 있었다.그 과정에서 소숫점이 남게 되는 경우가 생기면서 정확하게 노드가 배치되야 하므로 이를 int 형으로 바꿀 필요가 있었다. 구글링 결과 Mathf를 사용해서 소숫점 첫째자리에서 반올림, 올림, 내림이 가능하다는 것을 알게되었고이후에도 기억하고자 블로그 작성을 해서 기억에 남기려 한다 1. 반올림- Mathf.Round(float) = 소숫점 첫째 자리에서 반올림한 결과를 float형으로 반환- Mathf.RoundToInt(float) = 소숫점 첫째 자리에서 반올림한 결과를 int형으로 반환 2. 올림- Mathf.Ceil(float) = 소..

C# 공부 2025.03.30

[알고리즘] 정렬 알고리즘 (2) (힙정렬)

1. 개념: 비교 기반 정렬 알고리즘 중 하나로써 완전 이진 트리를 기반으로 하는 이진 힙의 속성을 이용해 리스트를 정렬하는알고리즘.최대 힙 or 최소 힙으로 구현할 수 있으며최대 힙 => 오름차순최소 힙 => 내림차순으로 정렬할 수 있는 정렬 방식이다.(공부할 때 '앞'에서부터 채워나간다고 해서 "최대 힙의 루트노드값이 먼저 할당되는데 왜 오름차순이지..?"라고 생각했었는데 여기서 '앞'에서 채워나간다는 말은 배열의 끝부터 채운다는 말이었다. == *0번 인덱스가 아닌 끝 인덱스부터 채움.*혹시나 나처럼 헷갈려했던 사람이 있을까봐 작성한다 + 나중에 나도 까먹을까봐)  2. 정렬 과정1) 주어진 리스트를 최대 힙 or 최소 힙으로 구성 => "힙 구성(Heapify) 단계" ① 기준이 되는 현재 노드의..

알고리즘 공부 2025.03.20

[알고리즘] 정렬 알고리즘 (1) (퀵 정렬)

1. 퀵 정렬1) 개념: 퀵 정렬이란 가장 많이 사용되는 정렬 알고리즘 중 하나로, 평균적으로 O(n log n)의 시간복잡도를 가지면서 빠르고 효율적임. 또한, 분할 정복 알고리즘(Divide and Conquer)을 기반으로 작동.① 피벗을 선택② 피벗을 기준으로 작은 값과 큰 값으로 나눔③ 왼쪽과 오른쪽 부분을 다시 퀵 정렬로 재귀적으로 정렬 2) 시간 복잡도평균 시간복잡도 - O(n log n)최악 시간복잡도 - O(n^2) (드물게 발생)▶ 대부분 빠른 정렬 성능을 제공 3) C#을 사용한 예시static void Main(string[] args){ int[] arr = new int[] { 3, 5, 6, 8, 1, 2, 4, 7 }; QuickSort(arr, 0, arr.Len..

알고리즘 공부 2025.03.19

[자료구조] 이진탐색트리 (Binary Search Tree)

1. 개념: 계층적인 구조를 가지는 트리중에서 각 노드의 자식이 최대 2개인 이진 트리이며, 정렬된 데이터를 빠르게 검색, 삽입, 삭제 할 수 있도록 설계된 자료구조 2. 구조와 특징1) 각 노드의 왼쪽 서브트리에는 "현재 노드보다 작은 값"이 저장됨2) 각 노드의 오른쪽 서브트리에는 "현재 노드보다 큰 값"이 저장됨3) 각 서브트리도 위의 규칙을 만족해야 함 8 / \ 3 10 / \ \ 1 6 14 / \ / 4 7 13 3. 이진 탐색 트리의 연산1) 검색- 탐색과정① 루트에서 시작해서 찾고자 하는 값 X가 현재 노드 값보다 작으면 왼쪽으로 이동② 크다면 오른쪽으로 이동③ 탐색 2) 삽입- 삽입과정① 루트에서 ..

자료구조 공부 2025.03.19

[CS] 값타입과 참조타입 (Value Type & Reference Type)

값 타입과 참조 타입은 메모리 저장 방식과 동작 방식이 다른 두 가지 데이터 유형. 1. 값 타입 (Value Type)1) 개념스택(Stack) 메모리에 저장됨.변수를 할당하면 값 자체가 저장됨.변수를 다른 변수에 대입하면 값이 복사됨(독립적인 메모리 공간을 가짐)메모리에서 빠르게 할당 및 해제 됨(GC의 영향을 덜 받음)int a = 10;int b = a; // 'a'의 값이 'b'로 복사됨b = 20; Console.WriteLine(a); // 10 (a의 값은 영향을 받지 않음)Console.WriteLine(b); // 20▶ a를 b에 대입해도 별개의 메모리 공간을 가지므로 b를 변경해도 a의 값이 변경되지 않음  2) 특징 (1) 값이 직접 저장됨.- 변수를 복사해도 독립적인 데이..

CS 공부 2025.03.17

[C#] 스트링빌더 (StringBuilder)

1. StringBuilder란?: C# 에서 문자열을 효율적으로 다룰 수 있도록 제공하는 클래스.string과 달리 불변(Immutable)이 아닌 가변(Mutable) 특성을 가지며, 문자열을 변경할 때 새로운 객체를 생성하지 않고 기존 객체를 수정할 수 있다는 점에서 string과 차이점이 있음.문자열을 반복해서 변경해야 하는 경우 (ex : += 연산을 자주 사용해야 할 때, 반복문)에 주로 사용하며 System.Text 네임스페이스를 선언해야 함. 2. 사용법① 객체 생성 및 문자열 추가 (Append)using System;using System.Text;class Program{ static void Main() { StringBuilder sb = new String..

C# 공부 2025.03.15

클릭, 터치 인터페이스 (IPointerDownHandler, IPointerUpHandler, IPointerClickHandler

개인 프로젝트를 진행중 UI Scroll View 내에 TextMeshPro 프리팹을 생성하여 드래그 앤 드롭을 해야하는 필요가 있었음. 그리하여 구글링 해 본 결과 이미 유니티 내에 인터페이스로 구현할 수 있도록 기능이 제공되고 있었음. 1. 인터페이스 각 기능IPointerDownHandler, IPointerUpHandler, IPointerClickHandler 는 모두 유니티에 포함된 인터페이스이며 이벤트 시스템을 활용하여 UI 오브젝트에 적용할 수 있는 클릭, 터치 관련 기능을 담당할 수 있도록 함. 각 인터페이스는 PointerEventData 클래스 타입의 매개변수를 받아서 구현해야 함. PointerEventData 클래스는 클릭한 위치(Position), 마지막 클릭 시간(clickTi..

유니티 공부 2025.03.06

싱글톤 패턴 (Singleton)

디자인 패턴 공부를 하면서 가장 먼저 알게됐던 패턴. 1. 싱글톤 패턴이란? - 프로그램 내에서 단 하나의 객체만 존재하는 컨트롤 타워로써 프로그램의 시작부터 종료까지 생존하면서 데이터 관리의 이점을 가져오는 디자인 패턴 - 게임 내에서 가장 많이 사용되는 디자인 패턴 중 하나 2. 장단점1) 장점 - 단일의 인스턴스와 전역적인 접근을 보장하기 때문에 싱글톤을 사용해 오브젝트들이 서로를 참조하고 있는 결합도를 낮출 수 있음 - 게임 내에서 파괴되지 않기 때문에 보다 편하게 데이터를 관리할 수 있음 2) 단점 - 전역적인 접근이 가능하기 때문에 데이터에 대한 보호수준을 주의하지 않으면 의도치 않은 데이터 변화가 발생할 수 있음 - 객체들이 싱글톤 객체의 데이터에 의존하게 되는 현상이 발생할 수 있음 - s..

인터페이스(Interface)

C#에서 클래스는 다중상속을 금지하였기 때문에 하나의 부모 클래스만 상속을 받을 수 있다. 그러다보니 발생하는 대표적인 문제점이 있는데 예를들면, '문'이라는 오브젝트가 '잠금'이라는 기능을 가진 클래스와 '출입구'라는 기능을 가진 클래스를 동시에 상속받지 못하다 보니 둘중에 하나의 기능만 하게 되는 문제가 발생한다.이러한 문제점을 보완하기 위해 필요한것이 인터페이스다. 1. 인터페이스1) 특징 - 인터페이스는 직접 구현하지 않고 인터페이스를 가지는 클래스에서 반드시 구현해야 한다는 특징이 있음. - 인터페이스의 첫글자 이름은 "I"로 해야한다는 암묵적인 룰이 있음 (ex. IEnterable, IOpenable 등) 2) 사용법 (1) 인터페이스를 생성하고 상속받는 클래스에서 반드시 구현해야하는 함수를..

C# 공부 2024.11.15

네트워크 동기화 [Photon, PUN]

네트워크 수업을 들으면서 매치메이킹 부분에서부터 명절 고속도로마냥 꽉 막힌 기분의 연속이었다.당장 네트워크 자체도 신경쓸게 너무 많아 어려운마당에 새로운 photonNetwork 메서드가 수없이 많고 콜백함수들도 너무 많았기 때문에 클론코딩을 하면서도 머리에 잘 들어오지 않았다.블로그에 쓰면서 조금이라도 더 이해하고 외워보고자 작성하게 됐다.1. 포톤 구현 컨셉:클라이언트 측에서 서버측으로 PhotonNetwork를 통하여 요청을 하고서버에서 클라이언트 측으로 MonoBehaviourPunCallbacks 클래스를 통하여 콜백 함수를 통해 응답하는 방식으로 요청을 처리한다.2. PhotonNetwork 메서드일단은 자주 사용하는 것으로 생각되는 것들만 작성했다.(실제로는 훨씬 많다)1) 네트워크 동기화 ..

네트워크 공부 2024.11.14