본문 바로가기
728x90
반응형

저는 이런걸 학습하고 있어요102

[자료구조] 동적 배열(Dynamic Array) 동적 배열의 필요성 -배열은 고정된 크기의 연속된 배열 요소들의 집합이므로 배열을 초기화 시 미리 배열의 크기를 정해야 한다. -그러나 때론 미리 이 크기를 정할수 없는 경우가 있고, 중간에 배열을 확장해야 하는 경우가 있다. -이런 상황에 사용하는 것이 동적 배열이며 .NET에는 ArrayList와 List가 있다. 동적 배열의 시간 복잡도 -배열(정적 배열)과 같이 인덱스를 통해 한 요소에 접근시 O(1) -배열의 요소 개수 n개에 대하여 특정 값을 탐색하는 시간 O(n) ArrayList 클래스 -모든 배열 요소가 object 타입인 Non-Generic 동적 배열 클래스다. -.Net의 Non-Generic클래스들은 System.Collections namespace 안에 있다. -박싱(value.. 2023. 6. 21.
SOLID 원칙 SOLID 란 -로버트 마틴이 2000년대 초반 명명한 객체 지향 프로그래밍 및 설계의 기본 원칙을 이야기한 것 (wikipedia) SOLID 소개 -위키 백과 내용을 기반으로 제가 경험하면서 받아들인 언어로 조금씩 붙여서 작성했습니다. S (SRP) 단일 책임 원칙 (Single Responsibility Principle) 한 클래스는 하나의 책임(기능)만 가져야 한다. O (OCP) 개방-폐쇄 원칙 (Open/Closed Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. -> 즉 기존의 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계해야 한다. L (LSP) 리스코프 치환 원칙 (Liskov Substitution Principle) 상위 타입 .. 2023. 6. 20.
[자료구조] 배열(Array) 배열 -연속적인 메모리상에 동일한 타입(or 그의 파생타입)의 요소를 일렬로 저장하는 자료구조 -인덱스를 사용하여 직접적으로 엑세스 가능 -고정된 크기를 갖는다 -> 초기화시 해당 크기 그대로 유지 (중간에 새로 사이즈를 바꾸지 않는다면) 배열의 시간 복잡도 -배열의 사이즈와 상관없이 한 요소에 접근하는 시간은 인덱스 사용시 O(1) -특정 요소를 찾기 위해선 배열의 크기 n에 대하여 O(n) 배열 최적화 -정렬된 배열에서 값을 찾는 경우, Binary Search를 이용하여 O(long n) 가능 배열 사용법 -ex) 1부터 10까지 합을 출력하는 프로그램 class Program { static void Main(string[] args) { int[] numArray = new int[10]; in.. 2023. 6. 20.
댕글링 포인터 (Dangling Pointer) 댕글링 포인터? -적절한 타입의 유효한 객체를 가리키고 있지 않은 포인터를 의미 -즉, 해제된 메모리 영역을 가리키고 있는 포인터를 댕글링 포인터라고 한다. 코드를 통해 댕글링 포인터가 뭔지 자세히 이야기 해보자. 다음과 같이 코드를 작성하여 numA를 출력하면 문제없이 1이 출력되고, numA의 메모리가 해제될 것이다. int* numA = new int(1); std::cout 2023. 6. 19.
[백준] 다리 놓기 - DP 문제 보러 가기 해당 문제는 백준 DP 알고리즘 분류에서 Silver 5 문제입니다. 문제 설명은 생략하고 제가 생각한 풀이를 적어보겠습니다. 참고로, 저는 C++ 언어를 사용합니다. 같이 생각해보기? 왼쪽의 다리와 오른쪽 다리를 연결합니다. 또한 다리는 각 1대1로 대응되어 건설됩니다. 이때 다리 건설은 서로 겹치지 않는다고 했으니, 무조건 1대1 대응이 확정입니다. 그렇다면 다리의 수는 항상 오른쪽 구역이 더 많은데 서로 중복되는게 없어야 한다? 즉 순서는 상관 없지만, 중복되는 것을 빼고 계속 뽑는다는 의미겠죠? 예, 조합을 의미합니다. 오른쪽 기준 내가 왼쪽 구역에서 다리를 선택하겠어! 라는 생각으로 문제를 접근해봅시다. 시작 전에 조합 공식 기억나시나요? 여기 있습니다!! 출처는 인터넷 ㅎ 피보.. 2022. 11. 12.
Coroutine 이야기 C# 에서의 Coroutine - 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 진입점을 허용함 - 처리 도중 취소가 가능하다 - 하나의 Object로 Single Thread에서 더욱 효율적으로 사용하기 위해 만들어진 것 - 병렬 처리가 아닌 동시성 처리다 - Why use? 하나의 스레드에서 오랫동아 처리되는 작업 진행시 스레드가 대기상태가 되는데, 대기 상태에 진입한 스레드를 깨워서 다른 작업 수행할 수 있게 하여 효율성 극대화 하려고 - 가만 보면 병렬처리하는 것 과 매우 비슷해 보이나, 서로 다름을 인지하고 있자!! Unity에서의 Coroutine - 기본적으로 C#을 사용하기에 위 내용은 기본 - Unity에선 StartCoroutine을 통해 코루틴을 실행! 이건 엔진 내부에서 .. 2022. 11. 11.
728x90
반응형