지역 변수(Local Variable)지역 변수란 선언된 메서드 내부에서만 유효한 범위(scope)를 가지는 변수를 말합니다. 즉, 해당 변수가 선언된 함수나 코드 블록 안에 있는 문장에서만 접근할 수 있으며, 메서드 외부에서는 사용할 수 없습니다.지역 변수는 메서드가 호출될 때 생성되고, 메서드 실행이 종료되면 소멸하기 때문에 메모리 관리 측면에서도 효율적입니다.예제using System; public class Program { public static void Main() { int a;
C#에서 Java의 Thread.setDaemon에 해당하는 기능Java의 Thread.setDaemon에 해당하는 C# 기능은 바로 포그라운드 스레드(Foreground Thread)와 백그라운드 스레드(Background Thread) 개념입니다.애플리케이션의 모든 포그라운드 스레드가 종료되면 백그라운드 스레드는 자동으로 강제 종료됩니다. 반면 포그라운드 스레드는 마지막 포그라운드 스레드가 종료될 때까지 계속 실행됩니다.IsBackground 속성스레드를 백그라운드로 설정하는 데 사용되는 속성은 IsBackground입니다. 이
Java의 함수형 인터페이스(Functional Interface)에 해당하는 C#의 개념은 바로 델리게이트(Delegate)입니다. 두 언어 모두 메서드를 변수처럼 다루고 람다 식과 함께 사용할 수 있다는 점에서 유사하지만, 구현 방식에는 차이가 있습니다.Java에서의 함수형 인터페이스Java에서 함수형 인터페이스는 추상 메서드를 정확히 하나만 가지는 인터페이스를 의미합니다. @FunctionalInterface 애노테이션을 붙이면 컴파일러가 이 조건을 검증해 주며, 람다 식이나 메서드 참조로 간결하게 구현할 수 있습니다.예제 코
Java의 이중 중괄호 초기화(Double Brace Initialization)란?Java의 이중 중괄호 초기화는 객체를 생성하면서 동시에 초기화할 수 있도록 해주는 기법입니다. 하나의 Java 표현식 안에서 객체 생성과 초기화가 모두 이루어지며, 내부적으로는 익명 클래스(anonymous class)와 인스턴스 초기화 블록을 활용하는 방식으로 동작합니다.흥미로운 점은, Java에서 이중 중괄호로 처리해야 하는 작업을 C#에서는 단일 중괄호, 즉 컬렉션 이니셜라이저(Collection Initializer)만으로 동일하게 구현할
문자열에서 각 단어의 첫 글자만 추출해야 하는 경우가 종종 있습니다. C#에서는 정규식(Regular Expression)을 활용하면 이 작업을 아주 간단하게 처리할 수 있습니다. 이번 글에서는 정규식을 이용해 문장 내 모든 단어의 첫 글자를 추출하는 방법을 예제 코드와 함께 살펴보겠습니다.문자열 준비먼저 다음과 같은 문자열이 있다고 가정해 보겠습니다.string str = The Shape of Water got an Oscar Award!;사용할 정규식각 단어의 첫 글자를 출력하려면 아래 정규식을 사용합니다.@\b[a-zA-Z]
C#의 Intersect() 메서드는 LINQ에서 제공하는 집합 연산 메서드로, 두 개의 시퀀스(컬렉션)에 모두 존재하는 공통 요소만 추출할 때 사용합니다.Intersect 메서드 기본 문법먼저 비교할 두 개의 리스트를 생성합니다.var list1 = new List<int>{99, 87}; var list2 = new List<int>{56, 87, 45, 99};이제 Intersect() 메서드를 호출하면 두 리스트에 공통으로 포함된 요소를 반환받을 수 있습니다.list1.Intersect(list2);전체
C# 프로그래밍을 하다 보면 문장에 포함된 각 단어의 첫 글자(이니셜)만 추출해야 하는 경우가 종종 있습니다. 예를 들어 Never Give Up!이라는 문자열에서 N, G, U만 뽑아내는 것이죠. 이번 글에서는 Split()과 Substring() 메서드를 활용해 이 작업을 간단하게 처리하는 방법을 알아보겠습니다.1. 기본 아이디어먼저 다음과 같은 문자열이 있다고 가정해 보겠습니다.string str = Never Give Up!;각 단어의 첫 글자를 얻으려면 두 단계를 거치면 됩니다.Split() 메서드로 문자열을 공백 기준으로
C#에서 큰 숫자를 다룰 때 1,000,000처럼 세 자리마다 쉼표를 넣어 표시하면 가독성이 크게 향상됩니다. 이번 글에서는 문자열로 된 숫자에 1000 단위 구분 기호(쉼표)를 적용하는 방법을 단계별로 알아보겠습니다.1. 숫자를 문자열로 준비하기먼저 구분 기호를 적용할 숫자를 문자열 형태로 준비합니다.string num = 1000000.8765;2. 소수점 앞과 뒤 부분 분리하기소수점이 포함된 숫자의 경우, 정수 부분과 소수 부분을 나누어 처리하는 것이 좋습니다. Substring()과 IndexOf() 메서드를 활용하면 손쉽게
C#에서 특정 숫자 n의 처음 m개 배수를 출력하려면, 먼저 n과 m의 값을 설정해야 합니다. 1. 변수 초기화 이 예제에서는 n을 6으로, m을 1로 설정합니다. 여기서 n은 배수를 구할 기준 숫자이고, m은 반복 횟수를 나타냅니다. int n = 6, m = 1; 2. while 루프를 이용한 배수 계산 다음으로 while 루프를 사용하여 m의 값을 하나씩 증가시키면서, 매 반복마다 n과 m을 곱한 결과를 출력합니다. m이 5가 될 때까지 반복하면 n의 처음 5개 배수를 얻을 수 있습니다. while (m <= 5) {
Foreach(포이치) 루프는 배열이나 컬렉션의 모든 요소를 인덱스 관리 없이 간결하게 순회할 수 있도록 해주는 반복문입니다. C++와 C# 모두 foreach 스타일의 문법을 지원하며, 이를 활용하면 코드의 가독성과 안정성을 크게 높일 수 있습니다. 이번 글에서는 두 언어에서 foreach를 사용하는 방법을 예제 코드와 함께 자세히 살펴보겠습니다.C++에서의 ForeachC++11부터 범위 기반 for 루프(range-based for loop)가 도입되면서 foreach와 동일한 방식으로 각 요소를 손쉽게 순회할 수 있게 되었습
C#에서 List<int>에 저장된 모든 숫자를 곱하는 방법을 단계별로 알아보겠습니다. 핵심 원리는 간단합니다. 곱셈의 항등원인 1로 결과 변수를 초기화한 뒤, 리스트의 각 요소를 순회하면서 차례대로 곱해주면 됩니다.1단계: 리스트 생성먼저 정수형 리스트를 선언하고 곱할 숫자들을 추가합니다.List<int> myList = new List<int>() { 5, 10, 7 };2단계: 곱셈 결과 변수 초기화곱셈 결과를 저장할 변수를 1로 초기화합니다. 0이 아닌 1로 시작해야 하는
C#에서 문자열에 어떤 모음(a, e, i, o, u)이 포함되어 있는지 확인하려면 LINQ의 Where, Distinct, Any 메서드를 활용하면 간단하게 처리할 수 있습니다. 가장 먼저 모음을 걸러내기 위한 조건을 설정합니다.string res = str.Where(chk => "aeiouAEIOU".Contains(chk)).Distinct();위 코드는 다음 문자열을 대상으로 동작합니다.string str = "the quick brown fox jumps over the lazy dog&q
C#에서는 List<int>를 활용하면 두 개의 정렬된 배열을 손쉽게 하나의 리스트로 병합할 수 있습니다. 이 글에서는 배열 선언부터 병합, 그리고 ToArray() 메서드를 사용한 배열 변환까지 단계별로 살펴보겠습니다. 1. 두 개의 정렬된 배열 준비하기 먼저 병합할 두 개의 정렬된 배열을 선언합니다. int[] array1 = { 56, 70, 77 }; int[] array2 = { 80, 99, 180 }; 2. 리스트에 요소를 추가하며 병합하기 List<int> 객체를 생성한 뒤, 반복문을 사용해
재귀(Recursion)를 사용하면 반복문 없이도 10진수를 손쉽게 2진수로 변환할 수 있습니다. 이번 글에서는 C#에서 재귀 호출을 활용해 10진수를 2진수로 바꾸는 방법을 단계별로 살펴보겠습니다. 1. 변환할 10진수 준비하기 먼저 2진수로 변환할 10진수 값을 선언합니다. int dec = 30; 이 값은 프로그램 실행 중 변경되지 않으며, 이후 재귀 함수에 전달됩니다. 2. 재귀 함수 정의하기 다음으로 10진수 값을 매개변수로 받는 재귀 함수를 작성합니다. public int displayBinary(int dec) {
C#에서 튜플(Tuple)은 서로 다른 타입의 여러 값을 하나의 단위로 묶어 관리할 수 있는 편리한 자료 구조입니다. 하지만 반복문 처리나 LINQ 연산 등 배열이 필요한 상황에서는 튜플의 요소들을 배열로 변환해야 할 때가 있습니다.1. 튜플 생성하기먼저 Tuple.Create 메서드를 사용하여 튜플을 생성합니다.Tuple<int, int> t = Tuple.Create(99, 53);위 코드는 두 개의 정수 값 99와 53을 담는 튜플을 만듭니다. 튜플의 각 요소는 Item1, Item2 속성으로 접근할 수 있습니다.2
C# 프로그래밍을 하다 보면 7D처럼 16진수 형태로 표현된 문자열을 실제 숫자 값으로 변환해야 하는 경우가 자주 발생합니다. 이 글에서는 Convert.ToSByte()와 Convert.ToInt32() 메서드를 활용해 16진수 문자열을 손쉽게 변환하는 방법을 알아보겠습니다.1. 16진수 문자열 준비하기먼저 변환할 16진수 문자열을 설정합니다.string str = 7D;2. Convert.ToSByte() 메서드로 변환하기Convert.ToSByte() 메서드는 두 개의 매개변수를 받습니다. 첫 번째 인자는 변환할 문자열이며,
헤테로그램(Heterogram)은 문자열에 중복된 알파벳이 하나도 없는 문자열을 의미합니다. 즉, 모든 문자가 한 번씩만 등장해야 합니다.예를 들어 다음 단어들은 모두 헤테로그램입니다.Mobile Cry Laptop헤테로그램 판별 원리판별 방법은 간단합니다. 크기 26의 정수 배열을 만들어 각 알파벳의 등장 여부를 기록하고, 문자열의 처음부터 끝까지 한 글자씩 순회하며 이미 등장한 적 있는 문자를 만나면 즉시 false를 반환하면 됩니다.for (int i = 0; i < len; i++) { if (val[str[i]
아나그램(Anagram)이란 한 문자열의 문자들을 재배열하여 다른 문자열을 만들 수 있는 경우를 말합니다. 즉, 두 문자열에 포함된 문자의 종류와 개수는 같지만 문자의 순서는 달라도 되는 관계입니다.아나그램 판별 원리예를 들어 다음 두 문자열을 살펴보겠습니다.string str1 = silent; string str2 = listen;두 문자열은 모두 s, i, l, e, n, t로 구성되어 있으므로 서로 아나그램입니다. C#에서 이를 확인하려면 다음 단계를 따릅니다.1단계: 문자열을 문자 배열로 변환대소문자 차이로 인한 오류를 방
C#에서 두 개 이상의 Dictionary(딕셔너리)의 합집합을 구하려면 HashSet과 UnionWith() 메서드를 활용하면 됩니다. 아래에서 단계별로 살펴보겠습니다.1단계: 두 개의 딕셔너리 생성먼저 합집합을 구할 두 개의 딕셔너리를 선언하고 요소를 추가합니다.Dictionary<string, int> dict1 = new Dictionary<string, int>(); dict1.Add(water, 1); dict1.Add(food, 2); Dictionary<string, int> dict
C#에서 여러 개의 리스트를 하나로 합치고 싶을 때 Union() 메서드를 사용하면 됩니다. Union()은 LINQ에서 제공하는 메서드로, 두 컬렉션을 병합하면서 중복되는 요소는 자동으로 제거해 줍니다.1. 리스트 생성먼저 세 개의 리스트를 생성합니다.// 세 개의 리스트 생성 var list1 = new List<int>{3, 4, 5}; var list2 = new List<int>{1, 2, 3, 4, 5}; var list3 = new List<int>{5, 6, 7, 8};2. Union(