2025/03 7

[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