본문 바로가기

분류 전체보기67

정렬 알고리즘의 기초 3편 : 삽입 정렬 (Insertion Sort) 이번 글에서는 정렬 알고리즘 시리즈의 마지막으로 삽입 정렬을 다룹니다.삽입 정렬은 정렬된 구간에 새로운 값을 적절한 위치에 삽입하는 방식으로 동작하며, 간단한 구현에도 불구하고 실제로 사용하는 경우가 종종 있을 정도로 효율적인 경우도 있습니다. 삽입 정렬이란?삽입 정렬은 배열의 두 번째 요소부터 시작하여, 왼쪽에 있는 정렬된 부분과 비교하면서 적절한 위치를 찾아 값을 끼워 넣는 방식입니다. 이러한 정렬 방식은 우리가 카드 놀이에서 손에 들고 하나씩 정렬하는 방식과 유사합니다. 작동 방식 요약1. 두 번째 요소부터 시작합니다.2. 현재 값을 왼쪽의 정렬된 구간과 비교합니다.3. 더 큰 값이 있다면 오른쪽으로 한 칸씩 밀어냅니다.4. 비어 있는 자리에 현재 값을 삽입합니다.5. 배열 끝까지 반복하면 정렬이 .. 2025. 5. 4.
정렬 알고리즘의 기초 2편 : 선택 정렬 (Selection Sort) 정렬 알고리즘의 두 번째 주제로 소개할 방식은 선택 정렬입니다.버블 정렬과 마찬가지로 단순한 구조를 가지고 있어, 알고리즘 학습 입문자에게 적합한 방식입니다.이번 글에서는 선택 정렬의 작동 원리와 구현 코드, 그리고 이 정렬에 ‘선택’이라는 이름이 붙은 이유를 함께 살펴보겠습니다. 선택 정렬이란?선택 정렬은 아직 정렬되지 않은 부분 중에서 가장 작은 값을 선택하여, 그 값을 앞쪽으로 이동시키는 방식입니다.즉, i번째 자리에 들어갈 값을 배열의 나머지 구간에서 '선택' 해서 자리를 바꾸는 것이 특징입니다.이 과정을 전체 길이만큼 반복하면 오름차순 정렬이 완성됩니다. 작동 방식 요약1. 현재 위치(i)를 기준으로, 그 뒤에 있는 값들 중 가장 작은 값을 찾습니다.2. 그 값의 위치(minIndex)를 기억.. 2025. 5. 4.
정렬 알고리즘의 기초 1편 : 버블 정렬 (Bubble Sort) 정렬 알고리즘은 프로그래밍에서 가장 기본적이고 중요한 주제 중 하나입니다.그중에서도 버블 정렬은 구조가 단순하고 이해하기 쉬워, 알고리즘 학습의 출발점으로 자주 사용됩니다.이번 글에서는 버블 정렬의 작동 방식과 구현 방법, 그리고 왜 ‘버블’이라는 이름이 붙었는지에 대해 소개드립니다. 버블 정렬이란?버블 정렬은 인접한 두 값을 비교하여 큰 값을 뒤로 보내는 방식의 정렬 알고리즘입니다.한 바퀴를 돌고 나면 가장 큰 값이 맨 뒤로 이동하게 되며, 이 과정을 반복함으로써 전체 배열이 정렬됩니다.이러한 과정에서 큰 수가 점점 뒤로 ‘떠오르는’ 모습이 거품(Bubble) 이 물 위로 올라가는 것과 비슷하기 때문에‘버블 정렬(Bubble Sort)’이라는 이름이 붙었습니다. 작동 방식 요약1. 왼쪽부터 인접한 두.. 2025. 5. 4.
C# 에서 temp 없이 값 교환하는 법, 이렇게 간단해도 될까요? C#을 처음 배울 때, 두 변수의 값을 서로 바꾸려면 보통 다음과 같이 작성했습니다.int temp = a;a = b;b = temp; 하지만 C# 7.0부터는 이 과정을 단 한 줄로 처리할 수 있습니다.(a, b) = (b, a); 왜 이렇게 되는 걸까요? 이 문법은 튜플 분해 할당(Tuple Deconstruction) 기능을 이용한 것입니다.• (a, b)는 왼쪽에 위치한 변수 그룹• (b, a)는 오른쪽에 위치한 값 그룹이 둘을 한 쌍으로 묶어 한 번에 할당하기 때문에 가능한 문법입니다.즉, (a, b) = (b, a); 는1. 오른쪽의 (b, a) 튜플을 먼저 평가한 다음2. 각각의 값을 왼쪽의 a, b에 동시에 할당하는 방식입니다. 이 구조 덕분에 temp 와 같은 임시 변수를 사용하지 않아.. 2025. 5. 4.
LINQ 란 무엇인가? 한마디로 요약하면, C#에서 컬렉션을 정렬하고 필터링하는 가장 간결한 방법입니다. C# 에서는 리스트나 배열 같은 컬렉션을 다루는 일이 잦습니다.특정 조건에 맞는 항목을 찾거나, 정해진 기준으로 정렬하는 작업이 자주 필요합니다.이러한 작업을 훨씬 직관적으로 처리할 수 있도록 도와주는 기능이 LINQ 입니다.LINQ 는 Language Integrated Query의 약자로, "언어에 통합된 질의" 라는 뜻입니다.여기서 Query(쿼리) 라는 단어는 원래 "질문" 또는 "문의"라는 뜻을 가지고 있으며, 프로그래밍에서는 주로 데이터를 대상으로 하는 조건 요청을 의미합니다.SQL 은 데이터베이스에게 “이런 조건의 데이터를 줘”라고 요청할 수 있는 질의 언어입니다.반면 LINQ는 리스트나 배열 같은 컬렉션에게.. 2025. 5. 2.
하드코딩으로 구현한 간단한 퀘스트 분기 처리 C# 에서 하드코딩으로 의사 결정 트리를 구성해보았습니다. 이 구조는 복잡한 if-else 대신, 조건과 결과를 분기 노드(DecisionNode) 형태로 깔끔하게 구성할 수 있어 가독성과 유지보수 측면에서 유리합니다. 퀘스트 트리플레이어의 상태에 따라 다음과 같은 분기를 수행하는 퀘스트 결정 트리를 만듭니다[레벨 ≥ 15?]├─ 예 → [고대 열쇠 + 왕의 인장 있음?]│ ├─ 예 → [튜토리얼 + 사이드미션1 완료?]│ │ ├─ 예 → 🎁 특별 퀘스트 지급: 왕의 시험│ │ └─ 아니오 → 📌 보조 퀘스트들을 먼저 완료하세요.│ └─ 아니오 → 🔑 필요한 아이템이 없습니다.└─ 아니오 → [VIP 토큰 있음?] ├─ 예.. 2025. 5. 2.