본문 바로가기
학원

37일차 - 2024-09-11

by 하타라시 2024. 9. 12.

 

버블 정렬과 삽입정렬 , 선택정렬에 관한 내용입니다.

[Algorithm] 버블 정렬 vs 선택 정렬 vs 삽입 정렬 차이 제대로 알고가자. (velog.io)

삽입정렬, 선택정렬, 버블정렬 장단점 간단정리 : 네이버 블로그 (naver.com)

 

버블 정렬은 이런 흐름으로 갑니다.

 

선택 정렬은 이런 흐름입니다. 최소값을 앞에서부터 정렬합니다.

 

삽입 정렬은 적절한 위치에 원소를 넣는 방식입니다.

위에 내용들은 추후 좀 더 이해해서 추가예정입니다.

핵심은 버블정렬, 삽입정렬 , 선택정렬 세가지는 O(n^2)이므로 O(1)이런친구들이 좀 더 좋다고 이해했습니다.

 

 

튜플은 놀랍게도 값 타입입니다.

[C#][자료구조] Tuple 튜플 (tistory.com)

먼저 그냥 사용하는 경우입니다. Item1,Item2 두개가 생긴 모습입니다.

각각 앞에부터 매핑됩니다.

 

Item1 ~ n말고 직접 이름을 붙이는 것과 안붙이는 것이 공존이 가능합니다.

 

여기서 그냥 print(t2)를 해버리면 데이터가 모두 나오게 됩니다.

 

타입을 명시하지 않아도 전달이 됩니다. 동일하게 Item으로 작동합니다.

 

 

추가로 만일 23.5이렇게 적으면 더블이고, f를 붙이면 float로 인식됩니다.

 

 

Func에 파라미터가 제네릭이기때문에 가능한 재밌는 것입니다.

 

 

익명형식은 참조 타입입니다. 둘이 형식이 일치하므로 test2 = test1이 가능한 것입니다.

 

추가로 읽기 전용이므로 값을 해당 방식으로 수정할 수 없습니다.

 

 

IEnumerable입니다. Print라는 메서드안에서는 System.Collections.Generic쪽으로 가게됩니다. 

여기서 GetEnumerator에서 재밌는것이 가능합니다.

 

MoveNext는 다음 항목으로 가라는 것입니다.

Reset은 초기 위치로 돌아오라는 것입니다.

c언어의 연결 리스트의 원리랑 나름 비슷하다고 이해하였습니다.

 

 

결국 List, int, Dictionary는 IEnuerable<T>에 해당하므로, Print로 출력시 결과가 올바르게 나옵니다.

저기에 나오는 Verbose라는 친구는 정보출력에 관하여 연관이 있다고 이해했습니다.

verbose (velog.io)

 

 

추가로 깔끔하게 정리해주신 블로그링크입니다. 어지간한건 다 가능하다고 일단은 인지하고 있습니다. 

IEnumerable를 상속받았다는 가정하에입니다.

[C#]LINQ와 IEnumerable, IQueryable 인터페이스 (tistory.com)

 

여기에 IComparable에 CompareTo가 정말 재미있는 친구입니다.

일단 List에는 Sort 메서드가 있습니다. 이를 통하면 보통의 경우 정렬이됩니다.

왜냐면 어떤식으로 정렬을 할지에 따른 기준이 있기 때문입니다.

 

 

정렬에 대한 기준이 없는 친구를 Sort하게되면, ArgumentException이 반겨줍니다.

 

IComparer을 상속받고, 정의를 해줍니다.

print나 Debug.Log를 쓰면 ToString이 사용되니깐 재정의하였습니다.

 

 

 

이런식으로 넣어도될진 모르겠지만 , 해당 느낌으로 전 이해했습니다.

결국은 기준이 있어야 정렬이 된다!! 입니다.

[20] IComparable<T>와 IComparer<T>를 이용하여 객체의 선후 관계를 정의하라 (tistory.com)

 

 

 

SQO입니다. patents에는 데이터들이 정의되어있습니다.

람다를 활용해서 만약 YearOfPublication이란 데이터가 18로 시작하는지의 여부를 따집니다.

 

Predicate로도 가능합니다. 리턴타입이 bool로 고정되기때문에 결과적으로는 위의 내용과 같은 내용입니다.

 

이제 LinQ입니다.일단 using System.Linq;가 필요합니다.

위에서 선언된 func를 조건으로 넣을 수 있습니다.

왜냐면 조건 항목과 Func의 형식이 일정하기 때문입니다. 

 

이런식으로 수동으로 직접 넣어 줄 수도 있습니다.

 

Select는 선택하는 것입니다. 이의 경우 patents의 Title만 가져올 것입니다.

그러므로 IEnumerable<string>으로 반환됩니다.

 

 

이번엔 Select(선택) , 정렬 - OrderBy,OrderByDescending, ThenBy(2차검사느낌,.)입니다.

 

Count는 조건에 해당하는 것의 개수를 알려줍니다. 그러므로 반환은 int입니다.

 

다음은 Any입니다. 조건에 해당하는 것이 발견되면 true를 반환합니다.

 

 

그 외의 많은 명령어가 있지만 추후 생각날 때에 정리나 해봐야겠습니다.

 

마지막으로 지연된 실행입니다. 위에 선언되어있다하여 먼저 실행되지 않고, 값을 호출할 때 실행됩니다.

이는 클로저와 캡처....또 연관이 됩니다..

Unity 이론 (람다 특징, SQO, LinQ, List) (velog.io)

 

 

 

감사합니다.



'학원' 카테고리의 다른 글

39일차 - 2024-09-13  (0) 2024.09.13
38일차 - 2024-09-12  (0) 2024.09.13
36일차 - 2024-09-10  (0) 2024.09.10
28일차-2024-09-02  (2) 2024.09.03
25일차-2024-08-30  (0) 2024.09.02