선택 정렬 ( Selection Sort )
·
📊Algorithm/정렬
선택 정렬 ( Selection Sort )선택 정렬은 배열에서 가장 작은 값을 찾아 맨 앞자리와 교환하는 방식으로 정렬하는 알고리즘이다.이 과정을 배열이 끝날 때까지 반복해서 전체를 정렬한다.즉, 매 단계마다 "최소값을 선택"해서 앞으로 보내는 방식이기 때문에 선택 정렬이라 부른다.현재 위치에서부터 배열 끝까지 순회하면서가장 작은 값을 찾아내고,그 값을 현재 위치에 있는 값과 교환한다. 동작 과정예를 들어 [ 5 , 3 , 8 , 4 , 2 ] 를 오름차순으로 정렬한다고 가정1. 첫번째- 전체 배열에서 최소값 찾기 → 2- 첫 번째 원소 ( 5 ) 와 자리 교환 → [ 2 , 3 , 8 , 4 , 5 ] 2. 두번째- 나머지 [ 3 , 8 , 4 , 5 ] 중 최소값 찾기 → 3- 현재 자리에 그대로..
버블 정렬 ( Bubble Sort )
·
📊Algorithm/정렬
버블 정렬 ( Bubble Sort )버블 정렬은 가장 단순한 정렬 알고리즘 중 하나로,인접한 두 원소를 비교하여 교환하면서 큰 값 ( 또는 작은 값 ) 을 점점 뒤로 보내는 방식이다.마치 거품 ( Bubble )이 물 위로 올라가는 것처럼 가장 큰 값이 뒤로 밀려나기 때문에 "버블 정렬"이라고 부른다.인접한 두 값을 비교앞의 값이 더 크면 서로 위치 바꾼다이 과정을 배열 끝까지 반복가장 큰 값이 끝에 도달하면 그 범위를 제외하고 다시 반복 동작 과정예를 들어 [ 5 , 3 , 8 , 4 , 2 ] 라는 배열을 오름차순 정렬한다고 가정1. 첫번째 - 5 와 3 비교 → 자리 바꿈 → [ 3 , 5 , 8 , 4 , 2 ]- 5 와 8 비교 - 8 과 4 비교 → 자리 바꿈 → [ 3 , 5 , 4 , 8..
알고리즘 ( Algorithm )
·
📊Algorithm
알고리즘 ( Algorithm )알고리즘 ( Algorithm ) 은 문제를 해결하는 방법을 순서대로 정리한 것이다.하나의 문제를 어떻게 풀 것인지에 대한 명확하고 순차적인 설명이며, 이를 바탕으로 프로그램을 작성한다.컴퓨터가 어떤 작업을 하려면, 사람이 이해할 수 있는 레시피 ( 조리법 ) 같은 지침이 필요하다.그 레시피가 바로 알고리즘이다. 알고리즘을 쉽게 이해하는 방법요리 레시피와 같다.입력 : 재료 ( 감자 , 기름 , 소금 )과정 : 감자를 깎고 칼로 썰어서 기름에 튀기고 소금을 뿌린다출력 : 완성된 감자튀김즉, 입력을 받아서 정해진 순서 ( 절차 ) 를 거치면 원하는 출력이 나온다. 알고리즘의 특징1. 명확성 ( 명시성 , Definiteness )각 단계는 애매하지 않고, 누구나 이해할 ..
250926
·
📖TIL
// KISS 원칙 // Keep It Simple Stupid : 단순무식하게 유지해라 // DRY 원칙 // Don't Repeat Yourself : 중복 코드를 제거하여 효율적으로 작성해라 // YAGNI 원칙 // You Aren't Gonna Need It : 지금 필요하지 않은 건 만들지 마라 public static void InsertionSort(int[] arr){ int n = arr.Length; for (int i = 1; i = 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; }}// 삽입 정렬// Insertion..
250926 알고리즘
·
📖TIL
문제를 해결하기 위한 과정을 논리적 절차에 따라 구성한 일련의 단계문제 이해 → 예시와 테스트 케이스 작성 → 알고리즘 설계 → 알고리즘 구현 및 검증 → 알고리즘 분석과 개선 Fisher Yates Shuffle/// /// 카드 섞어주는 기능/// /// 섞이지 않은 카드배열 public static void FisherYatesShuffle(int[] inputArr){ Random rnd = new Random(); // 섞을거니 랜덤을 만듦 for ( int i = inputArr.Length - 1; i > 0; i-- ) // 인덱스 역순 { int j = rnd.Next(0, i + 1); // 0부터 i까지 랜덤 인덱스 선택 (+1 이유는 0 이상 i 미만이..
250926 Revision
·
📖TIL
// 그래프// 비선형 자료구조// BFS DFS 장단점, 어디에 쓰이면 좋을지// HashTable , Dictionary// Hash 해쉬태그 , #// 데이터를 빠르게 찾기 위해, 특정 규칙에 따라 숫자 ( 위치 )를 반환하는 것// key, ValueHashtable hashtable = new Hashtable();// 딕셔너리랑 작동법이 같은// 오브젝트형으로 기억하기에 문제가 발생hashtable.Add("id", 12);hashtable["name"] = "호찬";hashtable["score"] = 95;// 딕셔너리와 똑같다. 오브젝트를 곁들인..Console.WriteLine(hashtable["name"]);// 개발자라면 안터지고, 실수 없는 코드가 더 좋은 코드// 해쉬함수// ..
큐 ( Queue<T> )
·
⭐C Sharp/15-4. 스택과 큐
Queue는 자료구조 중에서 먼저 들어간 데이터가 먼저 나오는 Queue를 기반으로 한다.선입선출 ( First-in , First-Out , FIFO ) 구조의 컬렉션이다. 선언 방법System.Collections.Generic 네임스페이스에 있는 Queue 를 사용한다.using System.Collections.Generic;Queue queue = new Queue(); //int형Queue strqueue = new Queue(); //string형 초기 용량 ( capacity ) 이나 배열, 리스트로 초기화 가능Queue queue = new Queue(100); Queue queueFromArray = new Queue(new int[] { 1, 2, 3 });string[] nam..
스택 ( Stack<T> )
·
⭐C Sharp/15-4. 스택과 큐
Stack 은 자료구조 중에서 가장 마지막에 넣은 데이터를 가장 먼저 꺼내는 스택을 기반으로 한다.후입선출 ( Last-in , First-Out, LIFO ) 방식의 컬렉션이다. 📌 기본 선언 방법스택은 System.Collections.Generic 네임스페이스에 있는 제네릭 클래스이다.using System.Collections.Generic;Stack stack = new Stack();Stack : int형만 담을 수 있는 스택Stack : string형만 담을 수 있는 스택Stack : 사용자 정의 클래스 객체도 담을수 있다 int[] numbers = { 1, 2, 3, 4, 5 };Stack stack = new Stack(numbers);초기값으로 배열이나 리스트를 넣을수 있다.이 경..
Method
·
⭐C Sharp/📌문법 사전
📌1. Method ( 함수 )메서드 ( 함수 )는 특정 작업 ( 기능 ) 을 묶어서 재사용할 수 있도록 만든 코드 블록이다.[접근제한자] [반환형] 메서드이름(매개변수목록){ // 실행 코드 return 값; // 반환형이 void가 아닐 때 필요}접근제한자 : public , private , protected 등 ( 외부에서 접근 가능 여부 )반환형 : 메서드가 돌려줄 값의 타입 ( int , string , void 등 )메서드 이름 : 파스칼 표기법 ( PascalCase ) 로 작성하는 게 관례이다매개변수 : 호출할 때 전달 받는 값 ( 준비물 ) 📂 2. 반환값이 있는 메서드public int Add(int a, int b){ return a + b;}// 호출int r..