728x90 반응형 c#31 [자료구조] 큐(Queue) 큐(Queue) -먼저 추가된 데이터가 먼저 출력되는 FIFO(First In First Out) 자료 구조로서 입력된 순서대로 처리해야 하는 상황에 이용된다. -Queue는 맨 뒤(tail)에 데이터를 계속 추가하고, 맨 앞(head)에서만 데이터를 읽기 때문에 순차적으로 데이터 처리한다. Queue 클래스 -.NET에는 큐를 Non-Generic인 Queue 클래스와 Generic 형태인 Queue 클래스가 있다. -두 Queue 클래스는 내부적으로 순환 배열로 구현되어 있는데, 배열의 마지막 요소에 다다른 경우 다시 배열 처음 요소로 순환하는 구조 (next % array_size)를 가지고 있다. -Queue는 내부적으로 head와 tail 포인터를 가지고 있는데, tail에 데이터를 추가(Enq.. 2023. 6. 26. [자료구조] 스택(Stack) 스택이란 -가장 나중에 추가된 데이터가 먼저 출력 처리되는 Last In First Out(LIFO) 자료구조다. -가장 최근에 입력된 순서대로 처리해야 하는 상황에 이용된다. -자료를 스택에 저장할 땐 Push, 꺼낼 땐 가장 최근 것부터 꺼내는데 이를 Pop 이라 한다. -스택에서 Pop시 스택에 top 값을 가져오면서 삭제한다. Stack 클래스 -.NET에는 Non-Generic인 Stack 클래스와 Generic 형태인 Stack 클래스가 있다. -Stack은 내부적으로 순환 배열로 구현되어 있으며, 스택이 가득 차면 자동으로 배열을 동적으로 확장한다. 사용 예제 using System; using System.Collections; using System.Collections.Generic; .. 2023. 6. 23. [Tip] @(심벌) 사용 @(심벌) 사용 1 -문자열 앞에 사용하면, 해당 문자열 안의 escape 문자를 무시하고 문자 그대로 인식하게 한다. ex) 사용 예제 //back slash를 한번 지정하면 escape 문자로 인식되기에 2개의 back slash사용 string fileName = "C:\\Temp\\example.txt"; //@을 문자열 시작 부호전에 사용하면, back slash을 그대로 back slash로 인식 string fileNmaeBySymbol = @"C:\Temp\example.txt"; @(심벌) 사용 2 -한 문자열 변수에 여러 줄의 문자열을 지정하는 경우 사용하면 편리하다. -+로 연결하여 사용할 수 있지만, @를 문자열 앞에 두면 복수행의 문자열들을 갖는 문자 데이터를 지정할 수 있다. e.. 2023. 6. 22. [자료구조] 해시테이블(Hash Table), Dictionary 해시테이블 -Hash는 키 값을 Hash Function으로 해싱하여 해시테이블의 특정 위치로 직접 엑세스하도록 만든 방식이다. -키 값이 많아지면 매우 많은 배열 공간이 필요한데, 이렇게 낭비되는 공간을 줄이기 위해 해시 함수를 사용한다. -해시 함수는 적은 공간 안에서 모든 키를 직접 찾아갈 수 있도록 해준다. Hashtable 클래스 -.NET에 Hashtable 클래스는 Non-Generic 클래스다. -Hashtable은 key값과 value값 모두 object 타입을 받아들여 박싱/언박싱이 일어난다. -Hashtable은 Double Hashing 방식을 사용하여 Collision Resolution을 하게 된다. -즉 해시 함수를 사용하여 key가 collision(충돌)이 발생하면, 다른 .. 2023. 6. 22. [자료구조] 연결 리스트(Linked List) Linked List 란? -데이터를 포함하는 노드들을 연결하여 컬렉션을 만든 자료 구조 -각 노드는 데이터와 다음/이전 링크 포인터를 갖게 된다. -단일 연결 리스트(Singly Linked List)는 노드를 다음 링크로만 연결한 리스트 -이중 연결 리스트는 각 노드를 다음 링크와 이전 링크 모두 연결한 리스트 -Circular Linked List(순환 연결 리스트)는 마지막 노드의 다음 링크가 맨 처음 노드를 가리키게 연결한 리스트 LinkedList 클래스 -.NET에서 LinkedList 클래스는 이중 링크드 리스트로 구현되어 있다. -LinkedListNode 클래스는 리스트 노드를 표현한다. -AddFirst, AddLast, AddBefore, AddAfter등으로 링크스 리스트 맨 앞,.. 2023. 6. 22. [자료구조] 시간 복잡도 정리 자료 구조 삽입 검색 삭제 인덱스 접근 T[] O(n) O(n) O(n) O(1) List O(1) O(n) O(n) O(1) LinkedList O(1) O(n) O(n) O(n) Dictionary O(1) O(1) O(1) - SortedDictionary O(log n) O(log n) O(log n) - HashSet O(1) O(1) O(1) - SortedSet O(log n) O(log n) O(log n) - Stack O(1) - O(1) - Queue O(1) - O(1) - 2023. 6. 21. 이전 1 2 3 4 5 6 다음 728x90 반응형