C# 큐(Queue)란 무엇인가?C#의 Queue(큐) 클래스는 선입선출(FIFO: First-In, First-Out) 방식으로 객체를 저장하는 컬렉션입니다. 말 그대로 가장 먼저 추가된 요소가 가장 먼저 제거되는 구조이기 때문에, 작업 처리 순서를 그대로 유지해야 하는 상황에서 매우 유용하게 사용됩니다.큐에서 요소를 추가하는 동작을 Enqueue(인큐), 요소를 제거하는 동작을 Dequeue(디큐)라고 부릅니다.큐에 요소 추가하기 – Enqueue큐에 새로운 요소를 추가하려면 Enqueue() 메서드를 사용합니다.Queue q
C# 리스트(List)와 딕셔너리(Dictionary)란?C#에서 딕셔너리(Dictionary)는 키(Key)와 값(Value)으로 구성된 컬렉션입니다. Dictionary<TKey, TValue>는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 제네릭 타입입니다. 특히 존재하지 않는 키를 조회하려고 하면 오류가 발생한다는 점이 특징입니다.반면 리스트(List)는 제네릭 클래스로, 다양한 데이터 타입을 저장하여 목록을 만들 수 있습니다.리스트(List) 예제리스트는 여러 항목들의 그룹입니
행렬 덧셈(Matrix Addition)은 같은 크기를 가진 두 행렬의 대응하는 원소끼리 서로 더하는 연산입니다. C#에서는 2차원 배열을 활용하면 간단하게 구현할 수 있습니다.행렬 덧셈의 기본 개념행렬 덧셈을 수행하려면 먼저 두 개의 행렬이 필요합니다. 첫 번째 행렬과 두 번째 행렬의 행(row)과 열(column) 개수를 입력받아야 하며, 두 행렬의 크기가 동일해야만 덧셈이 가능하다는 점을 기억해야 합니다.두 행렬에 원소를 모두 입력한 후, 새로운 배열을 선언하고 두 배열의 대응하는 원소들을 더한 값을 저장하면 됩니다. 핵심 연
C#에서는 2차원 배열을 활용해 행렬(matrix)을 표현할 수 있습니다. 이 글에서는 행렬의 크기를 정하고, 사용자로부터 요소를 입력받은 뒤, 콘솔에 보기 좋게 출력하는 전체 과정을 예제와 함께 살펴봅니다. 1단계: 2차원 배열 선언 먼저 행렬 데이터를 저장할 2차원 배열을 선언합니다. int[] arr = new int[10, 10]; 2단계: 사용자로부터 요소 입력받기 중첩 for 문을 사용해 바깥 반복문은 행(row)을, 안쪽 반복문은 열(column)을 순회하면서 각 위치의 값을 입력받습니다. for (i = 0; i &l
C#에서 10진수를 2진수, 8진수 등 다른 진법으로 빠르게 변환하려면 Stack(스택)을 활용하는 것이 효과적입니다. 스택의 LIFO(Last In, First Out) 특성 덕분에 나머지 연산으로 구한 자릿값들을 역순으로 꺼내어 올바른 결과를 얻을 수 있습니다.1. 목표 진법 설정하기먼저 변환하고자 하는 진법을 변수에 저장합니다. 예를 들어 2진수로 변환하려면 baseNum을 2로 설정합니다.int baseNum = 2;다른 진법이 필요하다면 값만 변경하면 됩니다.// 8진수 int baseNum = 8; // 10진수 int
C#에서 배열을 메서드로 전달하는 방법은 간단합니다. 다른 변수와 마찬가지로 배열을 메서드의 인수(argument)로 넘겨주면 됩니다. 이때 매개변수는 배열 타입으로 선언해야 합니다.배열을 받는 메서드 선언하기아래와 같이 정수형 배열을 매개변수로 받는 메서드를 선언할 수 있습니다.int displaySum(int[] arr, int size) { }메서드 호출하기메서드를 호출할 때는 배열 이름과 크기를 인수로 전달합니다.sum = d.displaySum(myArr, 5);전체 예제 코드다음은 배열을 메서드에 전달하여 요소들의 합계를
C# 정규식(Regex) 패턴 매칭이란?정규식(Regular Expression, Regex)은 입력 텍스트와 비교하여 일치 여부를 확인할 때 사용하는 패턴입니다. 하나의 패턴은 하나 이상의 문자 리터럴(literal), 연산자(operator), 또는 구문(construct)으로 구성됩니다.이번 글에서는 C#의 System.Text.RegularExpressions 네임스페이스를 활용해, 문자열에서 M으로 시작하는 단어만 추출하여 출력하는 방법을 예제와 함께 살펴보겠습니다.예제 코드using System;using System.T
암스트롱 수란 무엇인가?암스트롱 수(Armstrong Number)는 각 자릿수를 세제곱하여 모두 더한 값이 원래의 수와 같아지는 수를 말합니다. 가장 대표적인 예가 153입니다. 153은 1³ + 5³ + 3³ = 1 + 125 + 27 = 153이 되므로 암스트롱 수에 해당합니다.while 루프로 탐색 범위 설정하기1부터 1000 사이의 암스트롱 수를 찾으려면 먼저 while 루프를 사용하여 반복 범위를 지정합니다.while (val <= 1000) { // 처리 로직}각 자릿수 분리하기while 루프 내부에서 나눗셈
피보나치 수열은 첫 번째 항과 두 번째 항이 각각 0과 1이며, 세 번째 항부터는 바로 앞의 두 항을 더한 값이 되는 수열입니다. 즉, 0, 1, 1, 2, 3, 5, 8, 13, 21… 형태로 이어집니다. 이 글에서는 C#을 사용하여 피보나치 수열을 화면에 출력하는 방법을 단계별로 살펴보겠습니다. 기본 아이디어 피보나치 수열의 첫 두 숫자는 항상 0과 1로 고정되어 있으므로, 먼저 이 두 값을 초기화합니다. int val1 = 0, val2 = 1; 변수 n은 출력할 피보나치 수의 개수를 의미합니다. 처음 100개의 피보나치 수를
C# 멀티스레딩이란?스레드(Thread)는 프로그램의 실행 경로로 정의됩니다. 각 스레드는 프로그램 내에서 독립적이고 고유한 제어 흐름을 담당하며, 하나의 프로세스 안에서 여러 작업을 동시에 처리할 수 있게 해줍니다.C#에서는 System.Threading.Thread 클래스를 사용해 스레드를 생성하고 관리합니다. 이 클래스를 활용하면 멀티스레드 애플리케이션에서 개별 스레드를 만들고 제어할 수 있습니다. 참고로, 프로세스에서 가장 먼저 실행되는 스레드를 메인 스레드(Main Thread)라고 부릅니다.스레드의 생명주기(Life Cy
C#에서 키워드(keyword)란 컴파일러가 미리 정의해 놓은 예약어(reserved word)를 의미합니다. 키워드는 언어 문법에서 특별한 의미를 갖기 때문에 변수명, 클래스명, 메서드명과 같은 식별자(identifier)로 사용할 수 없습니다.하지만 부득이하게 키워드를 식별자로 사용해야 하는 경우라면, 키워드 앞에 @ 문자를 붙이면 됩니다. 예를 들어 다음과 같이 작성하면 오류 없이 컴파일됩니다.int @int = 100; // @ 접두사를 붙이면 예약어도 식별자로 사용 가능 Console.WriteLine(@i
C# 람다 식이란? 람다 식(lambda expression)은 C#에서 익명 함수(anonymous function)를 간결하게 표현하는 방법입니다. 메서드 이름 없이 인라인 형태로 로직을 작성할 수 있어, 컬렉션 처리나 LINQ 쿼리에서 코드를 훨씬 깔끔하고 가독성 있게 만들어 줍니다. => 연산자의 의미 람다 식에는 항상 토큰 =>가 등장합니다. 이 기호는 식 컨텍스트(expression context)에서 사용되며, 영어로 goes to(~로 간다)라고 읽습니다. 즉, 왼쪽의 입력 매개변수가 오른쪽의 식이나 문 블
C#에서 스레드(Thread)는 경량 프로세스(lightweight process)라고 불립니다. 각 스레드는 프로그램 내에서 고유한 제어 흐름을 정의하며, 여러 작업을 동시에 처리할 수 있게 해주는 핵심 요소입니다.스레드의 수명 주기는 System.Threading.Thread 클래스의 객체가 생성되는 시점에 시작되고, 해당 스레드가 종료되거나 실행을 완료하는 시점에 끝납니다.그렇다면 스레드는 생성부터 소멸까지 어떤 상태들을 거치게 될까요? 아래에서 하나씩 살펴보겠습니다.1. 시작되지 않은 상태 (Unstarted State)스레
C#에서 콘솔로부터 사용자의 입력을 한 줄씩 읽어 들일 때는 ReadLine() 메서드를 사용합니다. 이 메서드는 사용자가 Enter 키를 누를 때까지 입력한 문자열 전체를 반환하며, 반환 타입은 string입니다.str = Console.ReadLine();위 코드처럼 작성하면 콘솔에 입력된 한 줄이 변수 str에 저장됩니다.기본 예제 코드using System; using System.Collections.Generic; class Demo { static void Main() { string str;
C#에서 콘솔로 입력받은 값을 정수(integer)로 변환하려면 Convert.ToInt32() 메서드를 사용하면 됩니다.res = Convert.ToInt32(val);그럼 실제 사용 방법을 단계별로 살펴보겠습니다.Convert.ToInt32()란?Convert.ToInt32() 메서드는 숫자의 문자열 표현을 이에 상응하는 32비트 부호 있는 정수(int)로 변환해 줍니다. 사용자가 콘솔에 입력한 값은 기본적으로 문자열(string) 형태이기 때문에, 수학적 연산을 하려면 반드시 정수형으로 변환해야 합니다.1단계: 콘솔 입력 읽기
C#에서 문자(char) 목록이나 배열을 하나의 문자열(string)로 변환하는 것은 매우 간단합니다. 핵심은 string 클래스의 생성자를 활용하는 것입니다.1. 문자 배열 준비하기먼저 변환할 문자들을 담을 char 배열을 선언하고 값을 할당합니다.char[] arr = new char[5]; arr[0] = Y; arr[1] = E; arr[2] = S;2. 문자열로 변환하기문자 배열을 문자열로 변환하려면 new string() 생성자에 배열을 전달하면 됩니다. C#에서는 char 배열을 인수로 받는 string 생성자를 기본적
C#에서 사용자 입력을 문자열로 읽으려면 Console.ReadLine() 메서드를 사용하면 됩니다. str = Console.ReadLine(); 위 코드는 콘솔에 입력된 내용을 그대로 문자열로 읽어옵니다. Console.ReadLine() 메서드는 기본적으로 입력값을 문자열(string) 타입으로 반환하기 때문에, Convert 클래스나 별도의 형 변환 과정이 전혀 필요하지 않다는 점이 특징입니다. 그럼 실제로 사용자가 입력한 문자열을 화면에 출력하는 간단한 예제를 살펴보겠습니다. 예제 코드 using System; using
C#에서 인덱스를 사용해 리스트(List)의 특정 항목을 제거하려면 RemoveAt() 메서드를 사용하면 됩니다. 이 메서드는 지정한 위치(인덱스)에 있는 요소를 삭제하고, 뒤에 있는 요소들을 자동으로 앞으로 당겨줍니다.RemoveAt() 메서드란?RemoveAt(int index)는 List<T> 클래스에서 제공하는 메서드로, 매개변수로 전달된 인덱스 위치의 요소를 제거합니다. 인덱스는 0부터 시작하며, 유효 범위를 벗어난 값을 전달하면 ArgumentOutOfRangeException이 발생하므로 주의해야 합니다.리스
개요문자열에서 중복된 문자를 찾으려면 각 문자의 출현 횟수를 저장할 배열을 활용하면 됩니다. C#의 char 형식은 0부터 255까지의 값을 가질 수 있으므로, 크기가 256인 정수 배열을 만들면 모든 ASCII 문자의 빈도를 손쉽게 계산할 수 있습니다.먼저 char의 최대값에 해당하는 상수를 설정합니다.static int maxCHARS = 256;다음으로 문자열 내에서 중복된 문자를 화면에 출력합니다.String s = "Welcometomywebsite!";int []cal = new int[maxCHARS]
피보나치 수열은 앞의 두 수를 더해 다음 수를 만드는 대표적인 수학적 수열입니다. 즉, 각 항은 바로 앞의 두 항의 합과 같습니다. 이 글에서는 C#을 사용해 처음 10개의 피보나치 수를 콘솔에 출력하는 방법을 단계별로 살펴봅니다. 피보나치 수열의 기본 개념 피보나치 수열은 0과 1로 시작하며, 그다음부터는 이전 두 수의 합이 계속 이어집니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 1단계: 첫 두 숫자 초기화 처음 10개의 수를 표시하려면 먼저 수열의 시작점이 되는 첫 두 숫자를 설정해야 합니다. int