본문 바로가기

분류 전체보기78

정렬 알고리즘의 기초 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.
Dictionary 를 배열처럼 접근할 때 주의사항 C# 에서 Dictionary는 대괄호 [ ] 기호를 사용해 값을 가져오기 때문에 얼핏 보면 배열처럼 보입니다.그래서 처음에는 for (int i = 0; i 하지만 아래 코드를 보면, 배열처럼 접근하는 것이 왜 문제가 되는지 쉽게 이해할 수 있습니다. 실행시 오류가 나는 코드Dictionary numbers = new Dictionary() { { 1, "one" }, { 20, "twenty" }, { 3, "three" }, { 19, "nineteen" }, { 5, "five" }, }; for (int i = 0; i 이 코드는 실행과 동시에 다음과 같은 예외를 발생시킵니다The given key '0' was not present in the dictio.. 2025. 5. 2.