C#
이진탐색 알고리즘
소개 이진탐색 알고리즘은 정렬된 배열에서 특정 값을 찾는 데 사용되는 검색 알고리즘 중 하나입니다. 이번 글에서는 이진탐색 알고리즘을 자세히 살펴보고, C#스크립트로 예시를 작성해보겠습니다. 이진탐색 알고리즘이란? 이진탐색 알고리즘은 배열의 중간 값을 선택하여 찾고자 하는 값과 비교합니다. 만약 선택한 값이 찾고자 하는 값보다 크다면, 배열의 왼쪽 절반에 대해서 이진탐색을 반복합니다. 선택한 값이 찾고자 하는 값보다 작다면, 배열의 오른쪽 절반에 대해서 이진탐색을 반복합니다. 이 과정을 반복하여 찾고자 하는 값을 찾을 때까지 수행합니다. 이진탐색 알고리즘의 예 다음은 이진탐색 알고리즘의 예시입니다. static int BinarySearch(int[] arr, int target) { int left =..
C# DateTime
소개 c#에서 DateTime 클래스는 날짜와 시간 정보를 다루는 데 사용되는 클래스입니다. 이번 글에서는 c#의 DateTime 클래스의 다양한 내장 메서드와 프로퍼티들을 자세하게 살펴보겠습니다. DateTime 클래스란? DateTime 클래스는 c#에서 날짜와 시간 정보를 다루는 데 사용되는 클래스입니다. DateTime 클래스는 .NET Framework의 일부이며, 매우 다양한 메서드와 프로퍼티를 제공합니다. DateTime 클래스의 속성 DateTime 클래스는 다양한 속성을 제공합니다. 이러한 속성은 다음과 같습니다. DateTime.Now : 현재 날짜와 시간 정보를 가져옵니다. DateTime.UtcNow : 협정 세계시(UTC) 기준 현재 날짜와 시간 정보를 가져옵니다. DateTime..
C# Nullable<T>
소개 C#에서 nullable은 값 형식의 null 값을 표현하기 위한 개념입니다. 이번 글에서는 C# nullable에 대해 자세히 알아보고, 내장 메서드와 프로퍼티를 설명하고 사용 방법을 알아보겠습니다. Nullable이란? C#에서 값 형식은 null 값을 가질 수 없습니다. 그러나 nullable은 값 형식의 null 값을 표현할 수 있도록 합니다. nullable은 값 형식에 대한 래퍼(Wrapper) 클래스를 제공합니다. 이 래퍼 클래스는 값 형식의 null 값을 표현할 수 있습니다. Nullable 사용 방법 nullable은 값 형식 변수 뒤에 물음표(?)를 붙여서 사용합니다. 다음은 int 형식의 nullable 변수 선언과 초기화의 예입니다. int? nullableInt = null;..
C#의 #region 지시어
C#에서 #region 지시어는 코드를 논리적인 구획으로 나누어서 표시할 때 사용됩니다. #region 지시어를 사용하면 코드의 가독성을 높이고, 특정 영역을 쉽게 찾아볼 수 있습니다. #region 지시어의 사용법 #region 지시어는 다음과 같은 형태로 사용됩니다. #region 이름 코드 #endregion 위의 코드에서 이름은 #region 블록의 이름을 나타냅니다. 코드는 #region 블록에 속하는 코드입니다. #region 블록은 중첩될 수 있으며, #endregion 지시어는 생략 가능합니다. #region 지시어의 예 다음은 #region 지시어를 사용한 예시입니다. using System; namespace ConsoleApp { class Program { static void Ma..
객체지향의 5대 원칙 SOLID : Dependency Inversion Principle
DIP(Dependency Inversion Principle) - 의존성 역전 원칙 DIP는 객체지향의 5대 원칙 중 하나로, 고수준 모듈은 저수준 모듈에 의존해서는 안 된다는 것을 의미합니다. 이것은 추상화를 이용하여 모듈 간의 의존성을 낮추는 것을 의미합니다. DIP의 예시 DIP를 지키지 않은 코드는 다음과 같습니다. public class Button { private Lamp lamp = new Lamp(); public void OnPressed() { lamp.TurnOn(); } } public class Lamp { public void TurnOn() { // ... } } 위의 예제에서는 Button 클래스가 Lamp 클래스에 의존하고 있습니다. 이것은 DIP를 위배하는 코드입니다...
객체지향의 5대 원칙 SOLID : Interface Segregation Principle
ISP(Interface Segregation Principle) - 인터페이스 분리 원칙 ISP는 객체지향의 5대 원칙 중 하나로, 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 것을 의미합니다. 이것은 인터페이스를 작은 단위로 분리하여 인터페이스 간의 의존성을 낮추는 것을 의미합니다. ISP의 예시 다음은 ISP의 예시입니다. interface IAnimal { void Eat(); void Sleep(); void Move(); } class Dog : IAnimal { public void Eat() { /* ... */ } public void Sleep() { /* ... */ } public void Move() { /* ... */ } } class Bird : IA..
객체지향의 5대 원칙 SOLID : Liskov Substitution Principle
Liskov Substitution Principle Liskov Substitution Principle은 리스코프 치환 원칙으로, 서브타입은 언제나 자신의 기반 타입으로 교체 가능해야 한다는 원칙입니다. 이것은 상속을 사용할 때 하위 클래스가 상위 클래스의 기능을 대체할 수 있어야 한다는 것을 의미합니다. Liskov Substitution Principle의 예 다음은 Liskov Substitution Principle의 예시입니다. public class Rectangle { public virtual double Width { get; set; } public virtual double Height { get; set; } public double Area() { return Width * H..
객체지향의 5대 원칙 SOLID : Open-Closed Principle
Open-Closed Principle Open-Closed Principle은 개방-폐쇄 원칙으로, 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계해야 한다는 원칙입니다. 이것은 클래스의 수정보다는 확장을 통해 시스템을 변경해야 한다는 것을 의미합니다. Open-Closed Principle의 예 다음은 Open-Closed Principle의 예시입니다. public class Rectangle { public double Width { get; set; } public double Height { get; set; } } public class AreaCalculator { public double CalculateArea(Rectangle[] shapes) { double area =..