전체 글 36

C#: Dictioonary

해시테이블 (HashTable)키 값을 해시함수로 해싱하여 해시테이블의 특정 위치로 직접 엑세스하도록 만든 방식해시 : 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑데이터를 담을 테이블을 이미 크게 확보해 놓은 후입력받은 키를 해싱하여 테이블 고유한 index를 계산하고 데이터를 담아 보관  키값을 해싱하여 고유한 index를 만드는 함수조건으로 하나의 키값을 해싱하는 경우 반드시 항상 같은 index를 반환해야 함대표적인 해시함수로 나눗셈법이 있음예시 : 2581 → (2581 % 1000) = 581 해시함수가 서로 다른 입력 값에 대해 동일한 해시테이블 주소를 반환하는 것모든 입력 값에 대해 고유한 해시 값을 만드는 것은 불가능하며 충돌은 피할 수 없음 해시 충돌이 발생하면 연결리스..

C# (수업 정리) 2024.08.01

C#: 스택과 큐

- 선입후출(FILO), 후입선출(LIFO) 방식의 자료구조- 가장 최신 입력된 순서대로 처리해야 하는 상황에 이용  - 스택은 리스트를 사용법만 달리하여 구현 가능namespace 스택{ public class Program { static void Main(string[] args) { Stack stack = new Stack(); for (int i = 0; i 0) { Console.WriteLine(stack.Pop()); //Pop으로 꺼냄 } } }} - 선입선출(FIFO), 후입후출(LILO) 방식의 자료구조 - 입력된 순서대로 ..

C# (수업 정리) 2024.07.26

C#: 연결리스트

연결리스트- 데이터를 포함하는 노드들을 연결식으로 만든 자료구조- 데이터와 다른 데이터 지점의 참조변수를 가진 노드를 기본 단위로 사용- 데이터를 노드를 통해 연결식으로 구성하기 깨문에 데이터의 추가/삭제에 유용- 노드가 메모리에 연속적으로 배치되지 않고 연결 구조로 다른 데이터의 위치를 확인  연결리스트는 노드를 기본 단위로 연결식으로 구현 노드간의 연결구조에 따라 단방향, 양방향, 환형 으로 구분    연결리스트의 경우 데이터를 연속적으로 배치하는 배열과 다르게 연결식으로 구성  따라서, 데이터의 추가/삭제 과정에서 다른 데이터의 위치와 무관하게 진행되므로 수월함  하지만, 데이터의 접근 과정에서 연속적인 데이터 배치가 아니기 때문에 인덱스 사용 불가하여 처음부터 탐색해야 함    접근    탐색  ..

C# (수업 정리) 2024.07.26

C#: 리스트

리스트 (List)런타임 중 크기를 확장할 수 있는 배열기반의 자료구조 배열요소의 갯수를 특정할 수 없는 경우 사용이 용이               접근탐색삽입삭제O(1)O(n)O(n)O(n)  리스트는 배열기반의 자료구조이며, 배열은 크기를 변경할 수 없는 자료구조 리스트는 동작 중 크기를 확장하기 위해 포함한 데이터보다 더욱 큰 배열을 사용  중간에 데이터를 추가하기 위해 이후 데이터들을 뒤로 밀어내고 삽입 진행  중간에 데이터를 삭제한 뒤 빈자리를 채우기 위해 이후 데이터들을 앞으로 당김  용량을 가득 채운 상황에서 데이터를 추가하는 경우 더 큰 용량의 배열을 새로 생성한 뒤 데이터를 복사하여 새로운 배열을 사용 1. 리스트가 가득찬 상황에서 새로운 데이터 추가 시도2. 새로운 더 큰 배열 생성3...

C# (수업 정리) 2024.07.26

C#: 자료구조

자료구조프로그래밍에서 데이터를 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미 선형구조: 자료 간 관계가 1 대 1인 구조 (배열, 연결리스트, 스택, 큐, 덱)비선형구조: 자료 간 관계가 1 대 다 혹은 다 대 다인 구조 (트리, 그래프) 알고리즘 성능효율적인 문제해결을 위해선 알고리즘의 성능을 판단할 수 있는 기준이 필요상황에 따라 적합한 알고리즘을 선택할 수 있도록 하는 기준 - 컴퓨터에서 알고리즘과 자료구조의 평가는 시간과 공간 두 자원을 얼마나 소모하는지가 효율성의 중점- 일반적으로 시간을 위해 공간이 희생되는 경우가 많음- 시간복잡도: 알고리즘의 시간적 자원 소모량- 공간복잡도:..

C# (수업 정리) 2024.07.26

C#: Getter / Setter

멤버변수가 외부 객체와 상호작용하는 경우 Get & Set 함수를 구현해 주는 것이 일반적1. Get & Set 함수의 접근제한자를 설정하여 외부에서 멤버변수의 접근을 캡슐화함2. Get & Set 함수를 거쳐 멤버변수에 접근할 경우 호출스택에 함수가 추가되어 변경시점을 확인 가능 namespace Property{ public class Program { public class Player { private int mp; public int MP { get { return mp; } set { mp = value; } } ..

C# (수업 정리) 2024.07.25

C#: 확장 메서드

확장 메서드기존에 있는 클래스를 건드리지 않고, 기능을 추가할 수 있도록 하는 기능타인이 만든 클래스에 직접 접근하여 기능을 추가하면, 자신의 코드가 아니기 때문에 코드 작성 후 에러가 발생할 수도 있고, 협업 관계에 혼란을 줄 수도 있기 때문에 확장 메서드를 사용하여, 기존의 코드를 건드리지 않고 기능을 추가하는 것이 바람직- 클래스의 원래 형식을 수정하지 않고도 기존 형시게 함수를 추가할 수 있음- 상속을 통하여 만들지 않고도 추가적인 함수를 구현 가능- 정적함수에 첫번째 매개변수를 this 키워드 후 확장하고자 하는 자료형을 작성 namespace _2024_07_25_5{ public class Program { static void Main(string[] args) ..

C# (수업 정리) 2024.07.25

C#: 델리게이트 지정자

지정자 델리게이트를 사용하여 미완성 상태의 함수를 구성 매개변수로 전달한 지정자를 기준으로 함수를 완성하여 동작시킴 기준을 정해주는 것으로 다양한 결과가 나올 수 있는 함수를 구성가능 namespace _2024_07_25_3{ internal class Program { static void Main(string[] args) { int[] array = { 1, 3, 5, 7, 9 }; int less1 = CountIf(array, 4, Less); //배열에서 4보다 작은 애들은 몇 개 있니? int bigger1 = CountIf(array, 3, Bigger); ..

C# (수업 정리) 2024.07.25

C#: 델리게이트와 이벤트

대리자(델리게이트)- 특정 매개 변수 목록 및 반환 형식이 있는 함수에 대한 참조- 대리자 인스턴스를 통해 함수를 호출할 수 있음- 사용방법: delegate 반환형 델리게이트 이름 (매개변수들);- 반환형과 매개변수가 일치하는 함수를 델리게이트 변수에 할당- 델리게이트 변수에 참조한 함수를 대리자를 통해 호출 가능- 함수를 보관하고 담고 싶으면 델리게이트를 사용할 수 있다!!- 메서드의 주소를 가리키는 참조타입이기 때문에 변수처럼 선언해 사용- 객체간의 유연한 통신을 위한 패턴 namespace 델리게이트{ internal class Program { //delegate 반환형 델리게이트이름 (매개변수들); 로 정의함 //반환형이랑 매개변수가 일치해야 함! ..

C# (수업 정리) 2024.07.25