본문 바로가기

반응형

알고리즘

스택( stack )의 구현과 메소드 사용 [C#] 스택( stack ) 같은 곳에서 요소의 추가(푸시)와 제거(팝)를 하는 데이터 유형 LIFO(Last In First Out, 후입선출)원칙을 따른다. 즉,가장 최근에 추가된 항목이 가장 먼저 제거된다. 스택에는 항상 마지막으로 삽입된 요소를 가리키는 위쪽 포인터가 있다. 스택 또한 c#에 Stack 클래스가 구현 되어있다. 이때 T는 스택에 저장된 요소의 유형이다. 스택은 큐와 비슷한 메소드를 가진다.(처리 요소만 다를뿐, 큐에 구현된 메서드는 스택에도 있다) 스택 구현 및 메소드 사용 1. 스택 구현 Stack myStack = new Stack(); 2.스택 삽입 myStack.Push(10); myStack.Push(20); myStack.Push(30); 3. 스택 제거 int topEleme.. 더보기
큐( queue )의 구현과 메소드 사용 [C#] 큐 ( queue ) 요소가 한쪽 끝(후면)에서 추가되고 다른 쪽 끝(전면)에서 제거되는 요소 컬렉션을 나타내는 추상 데이터 유형 대기열은 FIFO(First In First Out,선입선출) 원칙을 따른다. 즉, 먼저 추가된 요소가 먼저 제거된다. c#에는 고맙게도 Queue 클래스가 구현 되어있다. 이때 T는 큐에 저장된 요소의 유형이다. 큐 구현 및 메소드 사용 1. 큐 구현 Queue queue = new Queue(); 2.큐 삽입 queue.Enqueue(10); queue.Enqueue(20); queue.Enqueue(30); 3. 큐 제거 int firstItem = queue.Dequeue(); 이때 queue.Dequeue();는 제거 된 요소 값을 반환하므로 fisrtItem 변수에.. 더보기
정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현(복잡하지만 효율적 정렬) 정렬 알고리즘의 종류와 시간복잡도를 이전 글에 포스팅을 했고 이번에는 복잡하지만 효율적 정렬 알고리즘을 구현해보았다. [정렬 알고리즘의 종류와 시간복잡도] 정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현 정렬 알고리즘의 종류와 시간복잡도 백준 알고리즘에서 실버단계로 올라가면서 점점 알고리즘을 공부해야 한다는 필요성을 느꼈다. 그래서 가장 기본적인 정렬알고리즘에 대해 정리를 해보고 rnflajdrnfl.tistory.com 이번 블로그에서는 복잡하지만 효율적 정렬을구현을 해보았다. 시간복잡도(nlogn) 사용한 프로그래밍 언어는 c#입니다. 쉘 정렬( shell sort ) 삽입 정렬 알고리즘의 작동원리는 배열의 특정 인덱스값이 정렬된 배열과 비교되어 알맞는 자리에 삽입을 하는 과정입니다. 만약 특정 인덱.. 더보기
정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현 정렬 알고리즘의 종류와 시간복잡도 백준 알고리즘에서 실버단계로 올라가면서 점점 알고리즘을 공부해야 한다는 필요성을 느꼈다. 그래서 가장 기본적인 정렬알고리즘에 대해 정리를 해보고 예시들도 풀어보았다. 우선 정렬알고리즘 종류와 시간 복잡도를 나타냈다. 언어는 c#이다. 위의 사진은 최악의 경우 시간복잡도 기준으로 맨위가 가장 느린순이다. 버블,삽입,선택,퀵은 O(n*n)이므로 모두 느린 정렬이다. 단순하지만 비효율적 정렬 버블 정렬, 삽입 정렬, 선택정렬 복잡하지만 효율적 정렬 퀵 정렬, 쉘 정렬, 힙 정렬, 병합정렬 이번 블로그에서는 단순하지만 비효율적인 정렬을구현을 해보았다. 복잡하지만 효율적 정렬은 아래 링크에 작성해놨다. 정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현(복잡하지만 효율적 정렬) 정렬.. 더보기
유클리드 알고리즘 정의 유클리드 알고리즘은 내가 백준 알고리즘을 공부하면서 알게 되었다. 코드 구현을 할때 수학적 명제 알고리즘을 알고있다는 것은 엄청난 도움이 된다고 생각해 공부를 해보고 포스팅 하게 되었다. 밑에는 유클리드 알고리즘을 만난 문제이다. 백준 알고리즘 2609번(유클리드 알고리즘) 나는 더 간결하고 흡입력있는 코드를 짜기 위해서 알고리즘을 공부하고있다. 알고리즘 문제를 풀고 나서 나보다 코드길이가 더 작은 사람의 코드를 보곤한다. 이번 문제도 문제를 풀고 나서 나 rnflajdrnfl.tistory.com 유클리드 알고리즘(유클리드 호제법) 유클리드 알고리즘은 두 정수 사이의 최대 공약수(GCD)를 찾는 방법입니다. 유클리드 알고리즘은 a를 b로 나눈 나머지가 r이면 a와 b의 GCD는 b와 r의 GCD가 같다.. 더보기
브루트 포스 알고리즘 정의 백준 문제를 풀다가 아무리 생각해도 푸는 방법이 쉽게 떠오르지 않는 문제가 있었다. 문제에 대한 고민을 하던 중 알고리즘 분류에 "브루트 포스 알고리즘"이라고 되어있어서 찾아보고 나도 브루트 포스 알고리즘에 대해 블로그 글을 써본다. 밑에는 브루트 포스 알고리즘을 처음 만난 문제이다. (C#) AI와의 대결 : 백준 알고리즘 2231번 Chat-GPT와 코드 비교 이 문제는 내가 알고리즘에 취약하다는 걸 알려준 문제이다. 지금까지의 알고리즘 문제는 알고리즘이라고 하기보단 논리적인 수학접근법으로 코드를 작성하면 잘 풀렸다. 그래서 이 문제를 시 rnflajdrnfl.tistory.com 브루트 포스 알고리즘 (무차별 대입 알고리즘) 무차별 대입 알고리즘은 최적화, 암호 크래킹 및 암호화를 해결하는데 강력한.. 더보기

반응형