try
{
// 예외가 발생할 수 있는 코드
}
catch (ExceptionType ex)
{
// ExceptionType에 해당하는 예외 처리
}
finally
{
// 예외 발생 여부와 상관없이 항상 실행되는 코드 생략가능
}
delegate 는 메서드를 매개변수로 전달하거나 변수에 할당
람다lambda 는 익명 메서드 ,메서드의 이름 없이 메서드를 만들 수 있다. 델리게이트를 사용하여 변수에 할당
Func는 값을 반환하는 메서드를 나타내는 델리게이트, Func<int, string>는 int를 입력으로 받아 string(int,int 도 가능)을 반환하는 메서드
Action은 값을 반환하지 않는 메서드를 나타내는 델리게이트, Action<int, string>은 int와 string을 입력으로 받고, 아무런 값을 반환하지 않는 메서드
Nullable 참조형 변수가 어떠한 객체를 참조하지 않을 때 사용
변수를 만들때 자료형 뒤에 ? 물음표를 붙이면 Nullable 형식이됨(int?), Nullable형식일때 null인지 아닌지 구분가능.
if (nullableDouble.HasValue) 에서 .HasValue 을 사용하여 값이 세팅된적이 없다면 null 확인가능.
O(n)
int Sum(int n)
{
int sum = 0;
for (int i = 0; i <= n; i++) // for 루프가 0부터 n까지 순회하며 합계를 계산. n회의 연산이 필요
{
sum += i;
}
return sum;
}
O(n^2)
void PrintPairs(int n)
{
for (int i = 0; i <= n; i++) // 두 개의 중첩된 for 루프를 사용, 각 루프는 0부터 n까지 순회, 전체 연산 횟수는 n^2
{
for (int j = 0; j <= n; j++) // 간단하게 n이 동시에 두곳에서 반복 O(n^2)
{
Console.WriteLine(i + ", " + j);
}
}
}
O(2^n) 는 재귀적으로 피보나치 수열을 계산하는 함수, 각 호출마다 두 번의 재귀 호출을 수행, 시간 복잡도는 O(2^n),
하지만 이는 매우 비효율적, 실제 문제 해결에서는 동적 프로그래밍 등의 기법을 사용 효율성을 높이는 것이 중요.
공간복잡도는 알고리즘이 실행될 때 추가적으로 필요한 메모리 공간을 측정, 입력 데이터 크기 n에 따라 메모리 사용량이 증가하는지를 분석