C# Study/C# 기초 맨텀 2023. 4. 25. 12:58
Enumerable.SequenceEqual 배열, 리스트 등 컬렉션의 요소들이 완전히 동일한 멤버과 순서를 가지고 있는지 체크하는데 사용한다. Enumerable.SequenceEqual (this System.Collections.Generic.IEnumerable first, System.Collections.Generic.IEnumerable second); 사용 예 List arr1 = new List { obj1, obj2 }; List arr2 = new List { obj1, obj2 }; bool equal1 = arr1.SequenceEqual(arr2); // 확장 메서드 bool equal2 = Enumerable.SequenceEqual(arr1, arr2); // 정적 메서드
C# Study/C# 케이스 스터디 맨텀 2023. 1. 25. 16:40
소수(Prime Number) 소수란 1보다 크면서 1과 자기 자신만을 약수로 갖는 자연수이다. 1은 소수가 아니다는 점에 주의할 것. 기본 방법 2부터 n - 1까지 순회하면서 나누어 떨어지는 수가 있는경우 false를 리턴한다. 시간 복잡도는 O(N) 이다. bool isPrime(int n) { if (n 결과값이 같다면 곱하는 두 수가 같은 경우가 제일 크다. 는 성질을 이용해 sqrt(N) 까지만 순회한다. bool isPrime(int n) { if (n
C# Study/C# 케이스 스터디 맨텀 2023. 1. 25. 14:18
선형탐색으로 약수 개수 구하기 가장 기본적으로 쉽게 구현 가능하다. 심플하게 구현하면 1부터 자기 자신까지 돌아가면서 직접 나누어 떨어지는지를 체크하는 것. 그러나 단순 계산만해봐도 O(N)의 복잡도를 갖는다. for문 int count = 0; for(int i = 1; i n % k == 0).Count(); 제곱근만큼만 구하기 자연수 N이 존재할 때, 약수는 절대 N의 제곱근 초과 ~ N 미만의 수가 될 수 없다. O(logN)의 복잡도를 가진다. [ 왜 제곱근 이하일까 ] 1. 곱해서 값이 K가 되는 두 수 a와 b가 있다고 해보자. 2. a와 b 가 같을 때를 기준으로 약수 끼리의 곱은 대칭이다. ( 만약 K가 6이면 루트 6인 2.44를 기준으로 1 * 6 / 2 * 3 / 2.44 / 3 *..
C# Study/C# 케이스 스터디 맨텀 2023. 1. 7. 19:02
특정 분류에 따라서 데이터를 나누는 경우의 코드는 어떻게 작성하는가? 생각해 볼 수 있는 가장 쉬운 방법은 foreach를 돌려가면서 Dictionary에 분류별로 담는 것이다. 그런데 LINQ에는 입력된 데이터를 분류할 수 있는 Group by into 쿼리식 혹은 GroupBy 메서드 호출구문이 존재한다. Group 쿼리식 Group은 쿼리식으로 사용되는 경우가 많은데, 분류까지만 하는 경우 group by 까지만 사용하고 분류된 것을 또다시 참조해서 쿼리식을 작성하는 경우 into까지 사용한다. n을 그룹핑(group) 하는데, 기준(by)은 n.Class로 나누고, 이를 c에 담는다.(into) var results = from n in students group n by n.Class into ..
C# Study/C# 케이스 스터디 맨텀 2022. 12. 24. 17:12
10진수 숫자와 2진수 숫자 간 변환하기. #. 2진수(string) -> 10진수(int) string numStr = "1001"; int num = Convert.ToInt32(numStr, 2); // 2진수로 변환하기 때문에 2를 넣는다. Console.WriteLine(num); // 출력값 : 9 Convert.ToInt32(string?, int) 메서드를 사용하여 해당 진수의 표기를 string으로 변환할 수 있다. #. 10진수(int) -> 2진수(string) int n = 9; string numStr = Convert.ToString(n, 2); // 2진수로부터 변환하기 때문에 2를 넣는다. Console.WriteLine(numStr); // 출력값 : "1001" Conve..
C# Study/C# 케이스 스터디 맨텀 2022. 12. 21. 00:08
Int형에 담긴 자연수 0~9 사이의 숫자 n이 주어졌을 때, Char로 변환하려고 한다. #. 잘못된 예시 : 바로 캐스팅하면 안된다 int n = 3; char myChar = (char)n; 정수를 (char)로 바로 캐스팅하면 ascii 코드의 인덱스를 기준으로 컨버팅 된다. 참고로 ASCII 코드는 숫자 48 ~, 소문자 65~ 대문자 97~ 부터 시작한다. #. char 형은 Int 형과 연산이 가능하다 char는 ASCII 코드 값을 기준으로 int형으로 변환된다! 이 특성을 활용하면 다음과 같은 연산도 가능하다. char x = '9'; // '9' = ASCII 57 int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9 즉 원래 원했던 n을 그대로 c..