Knowledge/Algorithm
-
[자료구조] 큐(Queue)에 대해서 알아보자Knowledge/Algorithm 2020. 5. 22. 03:56
주요 특징 1. FIFO(First-in, First-out) 더운 여름날 아마X빈에서 버블티를 사서 먹는 상상을 해보자. 빨대로 빨려 들어오는 타피오카 펄을 먹으며 우리는 큐를 생각해 낼 수 있다. 그것은 바로 선입선출의 과정을 진행하는 큐이다. 선입선출이란 우리가 빨대로 먹는 펄처럼 먼저 빨대에 들어온 녀석이 먼저 내 입에 들어온다는 법칙이다. 이 법칙은 판매업을 하는 가게에서 철칙으로 사용될 정도로 널리 사용되고 있으며 장점은 명확하다. 바로 제품의 신선도. 즉, 경우에 따라서 순환이 이루어 지지 못하는 스택과는 다르게 큐는 선착순으로 이루어진 공평한 순환을 겪게 된다. 또 다른 예시를 보면 은행을 예로 들 수 있다. 은행은 들어온 순서대로 번호표를 뽑고 기다리다가 번호 순서대로 작업을 처리하게 된..
-
알고리즘 - 선택 정렬을 코딩해보자!(2)Knowledge/Algorithm 2019. 7. 9. 13:46
https://shineild-security.tistory.com/31 알고리즘 - 선택 정렬을 코딩해보자!(1) 오늘은 저번에 작성했던 선택 정렬 개념을 바탕으로 코딩을 해보려고 한다. https://shineild-security.tistory.com/30 알고리즘 - 선택 정렬에 대해서 알아보자 오늘은 선택정렬을 구현하기에 앞서 개념에 대해서.. shineild-security.tistory.com 1편에 이어서 2편이다. 오늘은 다른 사람들의 코드를 참고하고 기존 코드를 수정해보려고 한다. 우선 위키백과를 참고해보았다. void selectionSort(int *list, const int n) { int i, j, indexMin, temp; for (i = 0; i < n - 1; i++) ..
-
알고리즘 - 선택 정렬을 코딩해보자!(1)Knowledge/Algorithm 2019. 7. 8. 23:49
오늘은 저번에 작성했던 선택 정렬 개념을 바탕으로 코딩을 해보려고 한다. https://shineild-security.tistory.com/30 알고리즘 - 선택 정렬에 대해서 알아보자 오늘은 선택정렬을 구현하기에 앞서 개념에 대해서 짚고 넘어가도록 하려한다. 선택정렬이란 여러 수를 정렬할 때 최소값을 기준으로 정렬을 하는 방식이다. ex) 임의의 데이터 값들이 있다. 3 4 1 2 9 8 1. 수열.. shineild-security.tistory.com 데이터의 형태는 저번 버블솔트 때와 같이 배열로 진행하려고 한다. 가장먼저 고민하게 된 부분은 최솟값을 어떻게 찾고 지정할건가였는데 생각해보던중에 예전에 점수 등수를 정하는 프로그램을 코딩했던 기억이 났다. 그걸 이용하면 최소값을 찾을 수 있는 것같..
-
알고리즘 - 선택 정렬에 대해서 알아보자Knowledge/Algorithm 2019. 7. 4. 23:54
오늘은 선택정렬을 구현하기에 앞서 개념에 대해서 짚고 넘어가도록 하려한다. 선택정렬이란 여러 수를 정렬할 때 최소값을 기준으로 정렬을 하는 방식이다. ex) 임의의 데이터 값들이 있다. 3 4 1 2 9 8 1. 수열을 탐색해서 가장 최소값인 숫자를 찾는다. 2. 가장 작은 숫자인 1을 발견할 것이다. 3. 1을 가장 왼쪽에 위치시키고 원래 있던 3을 1의 자리로 옮긴다. 1 4 3 2 9 8 4. 다시 1을 제외하고 가장 작은 숫자를 찾는다. 5. 2를 발견했으니 1 뒤에 위치시켜주며 4는 2의 자리로 바뀐다. 1 2 3 4 9 8 위 과정을 반복하면 1 2 3 4 8 9로 정렬이 완성된다. 정렬은 역시 최대 (n-1)번 이루어지는 정렬이다.
-
알고리즘 - 이진탐색 코드를 짜보자(2)Knowledge/Algorithm 2019. 6. 22. 06:56
https://shineild-security.tistory.com/26 알고리즘 - 이진탐색 코드를 짜보자(1) 오늘은 저번 이진탐색 개념정리에 이어서 직접 코드를 구현하는 시간을 가져보려고 한다. https://shineild-security.tistory.com/22 알고리즘 - 이진탐색 알고리즘 개념 안녕하세요. 오늘은 이진탐색 알고리즘.. shineild-security.tistory.com 전글에 이어서 오늘은 다른 사용자들의 코드를 참고해서 내 코드도 수정해보는 시간을 가지려고 합니다. 기존 작성 코드를 우선 살펴보자. #include int main(int argc, const char * argv[]) { int num; printf("데이터 개수 입력 : "); scanf("%d", &..
-
알고리즘 - 이진탐색 코드를 짜보자(1)Knowledge/Algorithm 2019. 6. 21. 07:19
오늘은 저번 이진탐색 개념정리에 이어서 직접 코드를 구현하는 시간을 가져보려고 한다. https://shineild-security.tistory.com/22 알고리즘 - 이진탐색 알고리즘 개념 안녕하세요. 오늘은 이진탐색 알고리즘 개념에 대해서 정리하려 합니다. 이진탐색이란 이진법, 이분법에서 파생된 말로 아메바를 예로 들 수가 있겠네요. 아메바는 번식을 할 때 자신의 몸을 반으로 나눠서 개체.. shineild-security.tistory.com 이진탐색을 진행함에 앞서서 필요한 전제조건이 뭔지 생각해보자. 우선은 데이터 정렬이 진행되어야 할 것이다. 여러 정렬들이 있지만 나는 하나밖에 정렬코드를 안만들어 놨음으로 버블소트 정렬을 사용할 것이다. 기존 버블소트 코드를 일단 가져왔다. #include..
-
알고리즘 - 이진탐색 알고리즘 개념Knowledge/Algorithm 2019. 6. 17. 00:50
안녕하세요. 오늘은 이진탐색 알고리즘 개념에 대해서 정리하려 합니다. 이진탐색이란 이진법, 이분법에서 파생된 말로 아메바를 예로 들 수가 있겠네요. 아메바는 번식을 할 때 자신의 몸을 반으로 나눠서 개체 수를 증가시킵니다. 그래서 사람들은 우수겟소리로 이분법적인 사고로 나눠서 판단하지 말라고도 말합니다. 두개로 분할한다라는 뜻으로 생각하시면 편할 것 같습니다. 그리고 이것을 수학적으로 접근해보면 우리는 친근한 게임을 예시로 들 수 있습니다. 그것은 바로 업다운 게임인데요. 우리는 업다운 게임을 할 때 본능적으로 가장 적은 횟수로 높은 확률을 갖을 수 있는 방법을 고안해 냅니다. 그것은 바로 1~100이란 숫자 중에 50을 기준으로 유추하기 시작하는 거죠. 만약 숫자가 87이라면 50을 묻고 높다고 판명이..
-
알고리즘 - Bubble Sort (버블 소트)를 코딩해보자(2)Knowledge/Algorithm 2019. 6. 15. 15:38
https://shineild-security.tistory.com/17 알고리즘 - Bubble Sort (버블 솔트)를 코딩해보자! (1) 알고리즘의 첫시작으로 하기에 좋은 정렬방법인 Bubble Sort. 지난번 포스팅에선 이 알고리즘의 개념에 대해서 포스팅을 했었다. https://shineild-security.tistory.com/17 알고리즘 - Bubble Sort 개념 (버블.. shineild-security.tistory.com https://shineild-security.tistory.com/18 알고리즘 - Bubble Sort (버블 솔트)를 코딩해보자! (1) 알고리즘의 첫시작으로 하기에 좋은 정렬방법인 Bubble Sort. 지난번 포스팅에선 이 알고리즘의 개념에 대해서 포..