탐색 알고리즘 ( Search Algorithms )
·
📊Algorithm/탐색
탐색 알고리즘 ( Search Algorithms )C# 에서 탐색 알고리즘은 데이터 안에서 원하는 값을 찾는 방법이다.탐색은 정렬 여부 / 탐색 범위 / 구조 형태 ( 리스트 , 트리 , 그래프 등 ) 에 따라 여러 가지로 나뉜다. 1. 기본 탐색 알고리즘 ( 배열 , 리스트 )데이터가 정렬되어 있는지 여부에 따라 달라진다. 1-1. 선형 탐색 ( Linear Search )하나씩 순서대로 비교하는 가장 단순한 방법정렬되어 있지 않아도 사용 가능BigO : O(n)int LinearSearch(int[] arr, int target){ for (int i = 0; i 1-2. 이진 탐색 ( Binary Search )정렬된 배열에서 중간값을 기준으로 탐색중간값보다 작으면 왼쪽 , 크면 오른쪽..
ref
·
⭐C Sharp/10. 참조
C# ref 완전 정리ref 는 값이 저장된 위치 ( 메모리 주소 ) 를 직접 전달하는 키워드이다.호출자가 가진 변수를 복사하지 않고 그 원본을 그대로 함수나 다른 변수에게 넘긴다수정 가능 : 피호출자가 값을 바꾸면 호출자 변수도 함께 바뀐다복사 비용 절감 : 특히 큰 struct ( 값 형식 ) 전달 시 복사 오버헤드 감소out : 반드시 초기화해서 돌려주기 ( 입력은 의미 없다 )in : 읽기 전용 ( by - ref 로 가져오되 수정 금지 , 복사 최소화 )ref : 읽고 / 쓰고 모두 가능 ( 원본 수정 ) 1. 매개변수로 사용void Foo(ref int x) { x += 10; }int a = 5;Foo(ref a); // a == 15호출부에도 ref 가 필요하다 ( 둘 다 작성해야 한다 ..
typeof
·
⭐C Sharp/03. 연산자
typeofC# 에서 데이터 형식 ( Type ) 정보를 가져오는 연산자이다.typeof 는 컴파일 시점에 특정 형식의 System.Type 객체를 반환한다.타입 자체를 인자로 전달할 때 사용한다. 문법Type 변수명 = typeof(자료형); 예시 코드using System;class Program{ static void Main() { Type t1 = typeof(int); Type t2 = typeof(string); Type t3 = typeof(Program); Console.WriteLine(t1); // System.Int32 Console.WriteLine(t2); // System.String ..
얕은 복사 vs 깊은 복사
·
⭐C Sharp/00. 문법
얕은 복사 ( Shallow Copy ) vs 깊은 복사 ( Deep Copy )얕은 복사 ( Shallow Copy )객체의 필드 값만 복사하고 , 참조형 필드가 가리키는 객체는 복사하지 않는다원본과 복사본이 같은 참조형 객체를 공유하게 된다 ▼예시 코드class Person{ public string Name; public Address Addr;}class Address{ public string City;}Person p1 = new Person { Name = "HoChan", Addr = new Address { City = "Seoul" } };Person p2 = p1; // 얕은 복사p2.Addr.City = "Incheon"; Console.WriteLine(p1.Ad..
Struct
·
⭐C Sharp/📌문법 사전
Struct ( 구조체 )값 형식의 사용자 정의 자료형으로 , 상속은 불가능하지만 인터페이스는 구현 가능// 구조체 선언struct 구조체이름{ // 변수(필드) 자료형 변수명; // 생성자 public 구조체이름(자료형 매개변수) { 변수명 = 매개변수; } // 메서드 public void 함수이름() { // 실행할 코드 }}// 구조체 사용구조체이름 변수명 = new 구조체이름(값);변수명.함수이름(); ⚠️ 주의struct 는 값 형식 ( Value Type ) 으로 , 스택에 저장된다클래스와 달리 상속 불가 , 기본 생성자 정의 불가인터페이스 구현은 가능하다생성자를 정의할 경우 모든 필드를 초기화해야 한다참조형처럼 ..
라이프사이클 한줄 요약
·
🧊Unity Basic/라이프사이클
라이프사이클 ( Life Cycle )게임 오브젝트와 스크립트가 실행되는 순서와 흐름Awake : 오브젝트가 생성될 때 자기 자신 준비 ( 컴포넌트 캐싱 , 싱글톤 설정 )OnEnable : 오브젝트가 활성화될 때 이벤트 구독 / 초기 상태 세팅Start : 첫 프레임 전에 한 번 , 다른 오브젝트까지 모두 준비된 뒤 초기화Update : 매 프레임마다 입력 , 로직 , 타이머 등 일반 실행FixedUpdate : 고정 시간마다 물리 연산 / 이동 처리LateUpdate : 모든 Update 이후 카메라 추적 , 위치 보정 등 후처리OnDisable : 오브젝트가 비활성화될 때 이벤트 해제 , 코루틴 정리OnDestroy : 오브젝트가 파괴될 때 최종 정리 및 리소스 해제
📌애트리뷰트 한줄 요약
·
🧊Unity Basic/애트리뷰트
애트리뷰트 ( Attribute )Attribute : 코드나 변수에 의도, 조건 , 메타데이터를 부여하는 주석형 명령어 ▼인스펙터 표시 제어 관련[SerializeField] : private 변수도 인스펙터에 표시하고 직렬화 가능[HideInInspector] : public 변수라도 인스펙터에 표시되지 않게 한다[Header("텍스트")] : 인스펙터에 제목을 표시 ( 섹션 구분용 )[Tooltip("설명문")] : 마우스 오버 시 도움말 문구 표시[Space(숫자)] : 인스펙터에서 항목 간 간격 추가[Range(min, max)] : 슬라이더 형태로 입력 제한[Multiline] : 여러 줄 텍스트 입력창 표시[TextArea(min, max)] : 인스펙터에서 지정된 크기의 텍스트박스 표시 ▼..
애트리뷰트 ( C# Attribute )
·
⭐C Sharp/00. 문법
애트리뷰트 ( Attribute )코드 ( 클래스 , 메서드 , 필드 등 ) 에 부가 정보를 붙이는 메타데이터 시스템이다.이 코드가 어떤 성격을 가지고 있다는 설명서나 라벨을 붙이는 개념이다. 예시이 메서드는 오래된 버전이다.이 클래스는 직렬화 가능하다.이 필드는 저장하지 마세요.처럼 컴파일러나 런타임이 참고할 수 있는 정보를 표시할 때 쓰인다. 작동 원리C# 에서는 모든 애트리뷰트가 System.Attribute 클래스를 상속받는 클래스 객체이다.[ ] 대괄호 안에 작성해서 코드 요소 위에 붙이면 컴파일러가 이 정보를 메타데이터로 저장한다.리플렉션 ( Reflection )으로 읽을 수 있게 된다.주석처럼 보이지만 실제로 실행 시 읽을 수 있는 데이터이다.[Obsolete("이 메서드는 더 이상 사용..
Attribute ( 애트리뷰트 )
·
🧊Unity Basic/애트리뷰트
Attribute ( 애트리뷰트 )C# 이나 Unity 에서 속성 또는 메타데이터를 코드 요소 ( 클래스 , 메서드 , 변수 등 )에 추가 정보로 표시할 때 사용하는 기능이다.Attribute ( 애트리뷰트 ) 는 코드에 의미를 추가하는 주석 같은 존재프로개름의 클래스 , 메서드 , 필드 , 프로퍼티 등에 추가적인 정보를 부여하는 메타데이터코드 자체에는 영향을 주지 않는다.컴파일러나 런타임 , 혹은 다른 툴이 이 정보를 읽고 동작을 다르게 하도록 지시하는 역할을 한다.단순한 주석이 아니라 , 실제 코드 안에서 읽히고 활용되는 구주화된 데이터이다.여기서는 Unity 에서의 애트리뷰트의 개념에 대해 정리한다. Unity 에서의 Attribute코드에 부가적인 정보나 지시문을 붙인다.Unity 에디터나 엔진이..