개요C#에서 정적(static) 메서드가 아닌 인스턴스 메서드를 사용하여 1차원 배열을 오름차순으로 정렬하는 방법을 알아보겠습니다. 이 예제에서는 선택 정렬(selection sort)과 유사한 중첩 반복문(nested for loop)을 활용해 배열의 요소를 서로 비교하고 교환하는 방식으로 정렬을 수행합니다.1단계: 정렬되지 않은 배열 선언먼저 정렬할 배열을 초기화합니다.int[] list = {87, 45, 56, 22, 84, 65};2단계: 중첩 반복문으로 정렬 수행다음으로, 배열을 매개변수로 전달받은 메서드 내부에서 중첩
C# Array.Reverse() 메서드란?C#의 배열(Array) 클래스에서 제공하는 Reverse() 메서드는 1차원 배열에 저장된 요소들의 순서를 전체적으로 뒤집는 기능을 합니다. 예를 들어 [29, 15, 30, 98]이라는 배열에 이 메서드를 적용하면 [98, 30, 15, 29]처럼 요소 순서가 반대로 변경됩니다.Array.Reverse() 사용 방법배열을 뒤집는 방법은 매우 간단합니다. 뒤집고자 하는 배열을 인수로 전달하며 Array.Reverse() 메서드를 호출하기만 하면 됩니다.Array.Reverse(temp);
들쭉날쭉한 배열(Jagged Array)은 배열의 배열을 의미합니다. 일반적인 2차원 배열과 달리 각 행(내부 배열)의 길이가 서로 다를 수 있어, 크기가 불규칙한 데이터를 다룰 때 유용하게 활용됩니다. 들쭉날쭉한 배열 선언하기 int 타입의 들쭉날쭉한 배열 scores(예시에서는 points)를 선언하는 방법은 다음과 같습니다. int[][] points; 대괄호 []를 두 번 연속으로 사용하여 배열의 배열임을 나타냅니다. 이 시점에는 아직 메모리가 할당되지 않은 상태입니다. 들쭉날쭉한 배열 초기화하기 선언된 배열을 초기화하려면
C#의 SetValue() 메서드는 1차원 배열(Array)에서 지정된 위치의 요소에 값을 설정할 때 사용됩니다. 이때 인덱스는 32비트 정수(int) 형태로 전달됩니다. 배열 생성하기 먼저 Array.CreateInstance() 메서드를 사용하여 문자열(String) 타입의 요소 6개를 담을 수 있는 배열을 생성합니다. Array arr = Array.CreateInstance(typeof(String), 6); SetValue()로 요소에 값 설정하기 생성된 배열의 각 요소에는 SetValue() 메서드를 통해 값을 할당
C#의 Sort() 메서드는 1차원 배열의 전체 요소를 각 요소에 구현된 IComparable 인터페이스를 기준으로 오름차순 정렬해 주는 기능입니다. 숫자 배열뿐만 아니라 문자열 배열 등 다양한 타입의 배열을 손쉽게 정렬할 수 있습니다.배열 선언하기먼저 정렬할 배열을 다음과 같이 선언합니다.int[] list = { 22, 12, 65, 9};Sort() 메서드로 배열 정렬하기Array 클래스의 정적 메서드인 Sort()를 호출하면 배열이 제자리에서(in-place) 정렬됩니다.Array.Sort(list);전체 예제 코드아래 예제
C# String.Compare 메서드란?String 클래스의 Compare 메서드는 지정된 두 문자열 객체를 비교한 후, 정렬 순서에서 두 문자열의 상대적인 위치를 나타내는 정수를 반환합니다.반환값의 의미는 다음과 같습니다.0보다 작은 값: 첫 번째 문자열이 정렬 순서상 앞에 위치합니다.0: 두 문자열이 동일합니다.0보다 큰 값: 첫 번째 문자열이 정렬 순서상 뒤에 위치합니다.1단계: 비교할 문자열 설정하기먼저 비교할 문자열 두 개를 선언합니다.string str1 = "Jack"; string str2 = &q
ToString() 메서드는 현재 객체를 나타내는 문자열을 반환합니다. C#의 모든 객체는 Object 클래스로부터 이 메서드를 상속받기 때문에, 어떤 타입이든 호출하여 해당 객체의 문자열 표현을 얻을 수 있습니다.배열에서 ToString() 사용 시 주의점다만 한 가지 유의할 점이 있습니다. 배열 객체에 대해 기본 ToString()을 직접 호출하면 배열의 실제 내용이 아니라 타입 이름(예: System.String[])이 반환됩니다. 따라서 배열과 관련된 의미 있는 정보를 문자열로 얻으려면, 아래 예제처럼 Array 클래스의 다
예외(Exception)는 프로그램의 한 부분에서 다른 부분으로 제어 흐름을 전달하는 메커니즘입니다. C#의 예외 처리는 try, catch, finally, throw라는 네 가지 핵심 키워드를 기반으로 동작합니다. C# 예외 처리의 4가지 핵심 키워드 try − try 블록은 예외가 발생할 가능성이 있는 코드 영역을 지정합니다. try 블록 뒤에는 반드시 하나 이상의 catch 블록이 따라와야 합니다. catch − 프로그램 내에서 문제를 처리하고자 하는 위치에 예외 핸들러(exception handler
C# XmlSerializer란 무엇인가?직렬화(Serialization)와 역직렬화(De-serialization)는 데이터를 주고받음으로써 다른 애플리케이션과 통신할 수 있게 해주는 핵심 기술입니다. C#의 XmlSerializer를 사용하면 객체가 XML로 인코딩되는 방식을 세밀하게 제어할 수 있습니다.XML 직렬화에 필요한 두 가지 클래스XML 직렬화를 수행하려면 다음 두 개의 클래스가 필요합니다.StreamWriter 클래스 – 직렬화된 XML 데이터를 파일에 기록하는 역할XmlSerializer 클래스 – 객체를 XML
WriteLine()은 System 네임스페이스에 정의된 Console 클래스의 메서드입니다. 이 메서드는 지정한 문자열이나 값을 콘솔 화면에 출력한 뒤 줄바꿈을 수행하며, C# 프로그래밍에서 가장 기본적이고 자주 사용되는 출력 방법입니다. 다음 예제처럼 WriteLine() 메서드를 호출하면 화면에 Welcome!이라는 메시지가 출력됩니다. 예제 1: 문자열 출력하기 using System; namespace Demo { class Test { static void Main(string[] args) {
C#에서 리스트에 저장된 여러 요소 중 하나를 무작위(랜덤)로 선택하는 것은 게임 개발, 데이터 샘플링, 추첨 로직 등 다양한 상황에서 자주 사용되는 기능입니다. 이 글에서는 Random 클래스를 활용해 리스트에서 임의의 요소를 간단하게 가져오는 방법을 알아보겠습니다. 핵심 원리 무작위 요소를 선택하는 원리는 매우 간단합니다. Random.Next() 메서드로 0부터 (리스트 개수 − 1) 사이의 임의의 인덱스를 생성한 뒤, 해당 인덱스로 리스트에 접근하면 됩니다. 먼저 문자열 리스트를 하나 생성해 보겠습니다. var list =
가변 배열(Jagged Array)은 배열의 배열을 의미합니다. 일반적인 2차원 배열과 달리 각 행의 길이가 서로 다를 수 있어 유연한 데이터 구조를 만들 때 유용하게 사용됩니다.가변 배열 선언하기int 타입의 요소를 담는 scores라는 이름의 가변 배열은 다음과 같이 선언할 수 있습니다.int[][] points;가변 배열 초기화하기선언 후에는 각 내부 배열의 크기를 자유롭게 지정하여 초기화할 수 있습니다.int[][] points = new int[][]{new int[]{10,5}, new int[]{30,40}, new i
C#에서 Dictionary(딕셔너리)는 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 대표적인 컬렉션입니다. 이번 글에서는 딕셔너리의 키를 기준으로 정렬하여 출력하는 방법을 예제와 함께 살펴보겠습니다.1. 딕셔너리 생성 및 데이터 추가먼저 키와 값을 가지는 딕셔너리를 선언하고 데이터를 추가합니다.var d = new Dictionary<string, int>(); d.Add(Zack, 0); d.Add(Akon, 3); d.Add(Jack, 2); d.Add(Tom, 1);2. 키 목록을 가져온 후 정렬하기딕
개요C# 프로그래밍에서 문장을 단어 단위로 처리하거나 특정 구분자를 기준으로 데이터를 나눠야 할 때가 자주 있습니다. 이럴 때 Split() 메서드를 사용하면 하나의 문자열을 손쉽게 여러 개의 부분 문자열로 나누어 문자열 배열에 저장할 수 있습니다.1. 분할할 문자열 준비하기먼저 분할하고자 하는 문자열을 변수에 담습니다.string str = Hello World!;2. Split() 메서드로 문자열 분할하기Split() 메서드에 구분자를 인수로 전달하면, 해당 구분자를 기준으로 문자열이 잘려 개별 요소로 저장됩니다. 아래 예제에서
C#에서 정규식을 활용해 문자열을 분할하려면 Regex.Split 메서드를 사용하면 됩니다. 이 메서드는 System.Text.RegularExpressions 네임스페이스에 포함되어 있으며, 지정한 정규식 패턴과 일치하는 부분을 기준으로 문자열을 나누어 문자열 배열로 반환합니다.기본 사용법먼저 분할할 문자열이 다음과 같다고 가정해 보겠습니다. 이 문자열은 줄바꿈 문자(\r\n)를 포함하고 있습니다.string str = Hello\r\nWorld;이제 Regex.Split을 사용해 줄바꿈 문자를 기준으로 문자열을 분할합니다.str
C#에서 문자열을 여러 개의 값으로 나누어야 할 때 구분자(Delimiter)를 활용하면 간편하게 처리할 수 있습니다. 구분자란 문자열 안에서 각 항목을 구분해 주는 문자를 의미하며, 가장 흔한 예가 쉼표(,)입니다.구분자란 무엇인가?예를 들어 아래 문자열에는 두 개의 쉼표가 포함되어 있으며, 이 쉼표가 바로 구분자 역할을 합니다.string str = Welcome,to,New York;구분자 설정하기먼저 분할에 사용할 구분자를 char 배열 형태로 따로 정의합니다.char[] newDelimiter = new char[] { ,
2차원 배열은 행(row)과 열(column)로 구성된 표 형태의 자료구조라고 생각할 수 있습니다. 즉, x개의 행과 y개의 열을 가진 구조로, 데이터를 격자 형태로 저장하고 관리하는 데 유용합니다.2차원 배열 요소에 접근하는 방법2차원 배열의 특정 요소에 접근하려면 첨자(subscript), 즉 행 인덱스와 열 인덱스를 함께 사용해야 합니다. C#에서는 대괄호 안에 쉼표로 구분하여 두 인덱스를 지정합니다.int x = a[1,1]; Console.WriteLine(x);위 코드에서 a[1,1]은 배열 a의 1행 1열 위치에 있는
C#에서 메서드를 재귀적(recursive)으로 호출한다는 것은, 메서드 내부에서 자기 자신을 다시 호출하는 방식을 의미합니다. 이번 글에서는 가장 대표적인 재귀 예제인 팩토리얼(Factorial) 계산을 통해 재귀 함수 display()가 어떻게 동작하는지 단계별로 살펴보겠습니다.종료 조건(Base Case) 설정재귀 함수는 무한히 호출되지 않도록 반드시 종료 조건이 필요합니다. 이 예제에서는 값이 1이면 더 이상 재귀 호출을 하지 않고 1을 그대로 반환합니다. 팩토리얼의 정의상 1! = 1이기 때문입니다.if (n == 1)
C#에서 구조체(structure)는 값 형식(value type) 데이터 타입입니다. 구조체를 활용하면 하나의 변수에 서로 다른 데이터 타입의 연관된 데이터들을 함께 담을 수 있습니다. C#에서는 struct 키워드를 사용하여 구조체를 생성합니다.구조체를 정의하려면 반드시 struct 문을 사용해야 합니다. struct 문은 프로그램에서 사용할 수 있는 새로운 데이터 타입을 정의하며, 이 데이터 타입은 하나 이상의 멤버(member)로 구성됩니다.예를 들어, 도서 정보를 담는 Books 구조체는 다음과 같이 선언할 수 있습니다.s
C#에서 for 루프는 일련의 문장을 여러 번 반복 실행하면서 루프 변수를 관리하는 코드를 간결하게 만들어 주는 대표적인 반복문입니다. 배열의 모든 요소를 초기화하거나 순회하며 값을 읽을 때 특히 유용합니다.for 루프의 기본 구조for 루프는 초기화, 조건식, 증감식 세 부분으로 구성됩니다.for (초기화; 조건식; 증감식) { // 반복 실행할 코드 }예제: 배열 초기화 및 요소 출력다음 예제에서는 크기가 10인 정수 배열을 선언하고, 첫 번째 for 루프로 각 요소를 초기화한 뒤, 두 번째 for 루프로 모든 요소의 값