본문 바로가기

분류 전체보기128

02.06 (TIL) 자료구조의 종류 및 차이점 자료구조는 데이터를 효율적으로 저장하고 관리하기 위한 구조입니다. 주요 자료구조에는 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue), 해시 테이블(Hash Table), 힙(Heap), 그래프(Graph), 트리(Tree) 등이 있습니다. 열(Array): 고정된 크기를 가지며, 인덱스를 통해 빠른 데이터 접근이 가능합니다. 동일한 타입의 데이터를 순차적으로 저장합니다. 연결 리스트(Linked List): 각 노드가 데이터와 다음 노드를 가리키는 포인터를 포함하여 연결되어 있습니다. 동적 크기 조정이 가능하며, 삽입과 삭제가 배열에 비해 용이합니다. 스택(Stack): LIFO(Last In First Out) 원칙에 따라 작동하는.. 2024. 2. 6.
02.05 (TIL) 선택 정렬과 버블 정렬 설명 및 코드 작성 선택 정렬(Selection Sort): 가장 작은 (또는 가장 큰) 요소를 찾아서 맨 앞의 요소와 바꾸고, 그 다음 작은 요소를 찾아 두 번째 요소와 바꾸는 방식으로 정렬을 진행합니다. 이 과정을 배열의 모든 요소에 대해 반복합니다. 버블 정렬(Bubble Sort): 인접한 두 요소를 비교하여 잘못된 순서(예: 오름차순 정렬에서 앞의 요소가 더 큰 경우)가 있으면 서로 위치를 바꾸는 과정을 배열의 끝까지 반복합니다. 이 과정을 배열이 정렬될 때까지 반복합니다. 선택 정렬(Selection Sort) 코드 예시 : 더보기 def selection_sort(arr): // 배열의 길이만큼 반복 for i in range(len(arr)): // 현재 인덱스를 최.. 2024. 2. 5.
02.02 (TIL) 델리게이트(Delegate)의 개념 핵심: 델리게이트는 메소드를 참조하는 타입입니다. C#에서 델리게이트는 메소드에 대한 참조를 보관하는 타입으로, 메소드를 변수처럼 전달하고 호출할 수 있게 해줍니다. 이를 통해 프로그램에서 메소드를 동적으로 할당하고 실행할 수 있으며, 콜백 메소드와 이벤트 처리에 널리 사용됩니다. 'delegate', 'event', 'action', 'func' 간의 차이 핵심: 각 키워드는 .NET에서 메소드 참조와 이벤트 처리를 위해 사용됩니다. 'delegate'는 메소드를 참조하기 위한 타입 선언에 사용됩니다. 'event'는 델리게이트를 기반으로 하는 이벤트를 선언할 때 사용되며, 클래스 외부에서 직접 호출할 수 없게 합니다. 'action'과 'func'는 각각 반환 값이.. 2024. 2. 2.
02.01 (TIL) 가비지 컬렉터 회피 전략 핵심: 관리되는 리소스 사용 최소화 및 효율적 관리로 가비지 컬렉터 회피. 객체를 필요 이상으로 생성하지 않고, 사용이 끝난 객체는 즉시 참조를 해제합니다. 또한, 대규모 객체 대신 작은 객체를 사용하고, 장기간 지속되는 객체는 풀링(pooling) 기법을 사용하여 관리합니다. 불필요한 박싱/언박싱을 피하고, 비관리형 리소스를 사용하는 경우에는 적절히 해제하는 것이 중요합니다. 가비지 컬렉션(Garbage Collection) 핵심: 가비지 컬렉션은 자동으로 메모리를 관리합니다. 프로그램이 동적으로 할당한 메모리 영역 중 사용하지 않는 부분을 자동으로 탐지하여 해제하는 시스템입니다. 이 과정은 메모리 누수를 방지하고 프로그램의 안정성을 높이지만, 때때로 성능 저하의 원인이 될 수.. 2024. 2. 1.
01.31 (TIL) float와 int의 수의 범위 차이 핵심: float는 부동소수점 수를, int는 정수를 표현합니다. float는 소수점을 포함한 실수를 표현하기 위해 지수와 가수를 사용하는 부동소수점 방식을 사용합니다. 이 때문에 큰 범위의 수를 표현할 수 있지만, 정확도는 int에 비해 떨어질 수 있습니다. 반면, int는 고정된 길이의 메모리를 사용하여 정수만을 표현합니다, 더 높은 정확도를 제공하지만 표현 가능한 수의 범위가 float보다 작습니다. 'ref'와 'out'의 사용 차이 핵심: 'ref'는 두 방향 참조, 'out'은 단방향 참조입니다. 'ref' 키워드는 메소드에 변수를 참조로 전달할 때 사용되며, 메소드 내부와 외부에서 변수의 값을 변경할 수 있습니다. 반면, 'out' 키워드는 메소드에서 생.. 2024. 1. 31.
01.30 (TIL-Unity) 오늘은 어제의 루프작업에 연장선이다. 구현한 기능: 루프 지점 제어 및 상호작용 스위치 목적: 게임 내에서 플레이어가 특정 지점에 도달하면 다른 지점으로 이동하도록 하는 기능과, 이러한 '루프' 기능을 제어하는 상호작용 스위치를 구현. 사용한 스크립트: SW_Loop 및 SW_LoopSwitch. 더보기 // SW_Loop: 플레이어가 지정된 트리거에 도달하면 루프 앤드 위치로 이동 IEnumerator FadeScreenAndTeleport(GameObject player) { // 화면을 어두워지게 하는 과정 // 플레이어 위치 이동 // 화면을 다시 밝게 만드는 과정 } // SW_LoopSwitch: 플레이어가 상호작용할 때 등록된 루프 지점 오브젝트들을 제거 public void OnIntera.. 2024. 1. 30.
01.29 (TIL-Unity) 구현한 기능: 화면 어두워지는 효과와 위치 이동 (Fade Screen and Teleport) 목적 : 플레이어가 특정 지점(루프 스타트)에 도달했을 때 시각적으로 인지할 수 있는 화면 효과를 제공하고, 지정된 다른 위치(루프 앤드)로 이동시키는 것 사용한 스크립트 : SW_Loop 구현코드(간단한로직) 더보기 IEnumerator FadeScreenAndTeleport(GameObject player) { // 화면을 어두워지게 하는 과정 float timer = 0; while (timer 2024. 1. 29.
01.26 (TIL-Unity) 오늘은 작업한 스크립트의 리펙토리를 진행중이다. 객체지향 설계 원칙의 이해: 단일 책임, 개방/폐쇄, 리스코프 치환 원칙 1. 단일 책임 원칙 (Single Responsibility Principle, SRP) 정의: 한 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 즉, 클래스가 변경되어야 하는 이유는 단 하나여야 합니다. 목적: 이 원칙은 클래스의 복잡성을 줄이고, 유지보수를 용이하게 하며, 테스트를 간편하게 만들기 위해 사용됩니다. 적용 방법: 클래스가 여러 기능을 갖고 있다면, 각 기능을 개별 클래스로 분리하여 각 클래스가 하나의 책임만을 지도록 합니다. 예시: 사용자 인터페이스 처리, 비즈니스 로직 처리, 데이터베이스 연동 처리 등 각각의 기능을 별도의 클래스로 분리할 수 있습니다. 1-1.. 2024. 1. 26.
01.25 (TIL-Unity) 구현한 기능: 진동 효과 (Camera Shake Effect) 목적: 플레이어가 특정 영역에 진입하거나 특정 상호작용을 할 때 시각적 및 몰입감 있는 피드백 제공. 사용한 스크립트: SW_ShakeEffect , Cinemachine 라이브러리 사용. 구현 코드 (간단한 로직): 더보기 // 진동 효과 적용 함수 private void ApplyShakeEffect() { // Cinemachine 컴포넌트를 통해 진동 효과 적용 var perlin = virtualCamera.GetCinemachineComponent(); perlin.m_AmplitudeGain = amplitudeGain; // 진동 강도 설정 perlin.m_FrequencyGain = frequencyGain; // 진동 빈도.. 2024. 1. 25.
01.24 (TIL-Unity) 구현한 기능: 자동 문 닫힘 기능 (Auto-Close Door) 1. 시간 기준 자동 문 닫힘: 목적: 일정 시간이 지난 후 자동으로 문을 닫기 위함. 사용한 스크립트: SW_AutoCloseDoor 변경된 코드: 더보기 // 시간 기준 자동 닫힘 로직 private IEnumerator AutoCloseDoor() { yield return new WaitForSeconds(autoCloseDelay); // 지정된 지연 시간 후 실행 // 문 닫힘 로직 } 사용 이유: 사용자가 문을 통과한 후 자동으로 닫히게 하여 게임의 리얼리티를 증가시키고, 플레이어의 추가적인 입력을 줄이기 위함. 2. 트리거 기준 자동 문 닫힘: 목적: 플레이어가 특정 영역(트리거)에 들어갔을 때 문을 자동으로 닫기 위함. 사.. 2024. 1. 24.