본문 바로가기

정렬11

[알고리즘-5] 기초 정렬 알고리즘 문제 풀이 안녕하세요 기린입니다 :) 이번 시간에는 앞서 배웠던 정렬 알고리즘을 활용해 실제로 문제를 풀어보는 시간을 가져보겠습니다. 먼저 알고리즘 문제 풀이 사이트는 종류가 다양한데 저는 최백준님 사이트를 추천드립니다 ! 백준 온라인 저지: https://www.acmicpc.net/ 백준 온라인 저지에 들어가셔서 일단 회원가입 후 로그인 해보실게요 ! 알고리즘을 이제 막 시작하신 분이라면 문제 카테고리에서 > 알고리즘 분류 > 단계별로 풀어보기 를 먼저 스터디 해보시는걸 추천드려요 ! 저희는 단계별 풀어보기를 해보도록 하겠습니다 : ] 첫 번째 문제는 '수 정렬하기' 입니다. https://www.acmicpc.net/submit/2750 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시.. 2022. 3. 23.
[알고리즘-4] 퀵 정렬 안녕하세요 기린입니다 :) 지난 시간까지 다루었던 선택 정렬, 버블 정렬, 삽입 정렬 알고리즘 모두 시간 복잡도 O(N^2)를 가지는 알고리즘 이었는데요. 이러한 알고리즘 들은 데이터의 갯수가 10만 개만 넘어가도 사용하기가 매우 어려운 알고리즘입니다. 그렇기 때문에 더욱 빠른 정렬 알고리즘이 필요하겠죠 ? 자 대표적으로 빠른 알고리즘인 퀵 정렬에 대해 알아보겠습니다. 퀵 정렬은 대표적인 '분할 정복' 알고리즘으로 평균 속도가 O(N * logN) 입니다. 예시를 통해 바로 확인해보시죠 :] 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 퀵 정렬은 하나의 큰 문제를 두 개의 작은 문제로 분할하는 방법으로 빠르게 정렬하는데요, 더 쉽게 말해 특정한 값을 .. 2022. 3. 15.
[알고리즘-3] 삽입정렬 안녕하세요 기린입니다 :) 지난 시간까지 선택 정렬과 버블 정렬에 대해 알아보았습니다. 앞에서 다룬 정렬 알고리즘은 모두 시간 복잡도 모두 O(N^2)을 가진다는 점에서 비효율적이라 할 수 있죠. 이번시간에 다룰 삽입 정렬은 어떨지 한번 보겠습니다. 문제는 지난 시간과 동일합니다. 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 삽입 정렬은 위 문제를 풀 때 각 숫자를 적절한 위치에 삽입하는 방법으로 문제를 해결합니다. 자 여기서 다른 알고리즘들은 무조건 위치를 바꾸는 방식이었다면 삽입 정렬은 '필요할 때만' 위치를 바꾸게 되는데요 먼저, 소스 코드를 살펴 보겠습니다. #include int main(void) { int i, j, temp; int ar.. 2022. 3. 10.
[알고리즘-2] 버블정렬 안녕하세요 기린입니다 :) 오늘은 지난 시간에 이어서 버블 정렬에 대해 알아볼텐데요 자 버블정렬이란 일련의 숫자들을 오름차순으로 정렬하는것 인데요 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 버블정렬 또한 선택정렬과 같이 몹시 직관적인 해결 방법입니다 바로 가까이에 있는 두 숫자끼리 비교해서 더 작은 숫자를 앞으로 보내주는 것을 반복 하는 겁니다 다시 말해 버블정렬이란 옆에 있는 값과 비교하여 더 작은 값을 반복적으로 앞으로 보내는 정렬 방법인데요 정렬 알고리즘 중에서 구현은 가장 쉽지만 가장 비효율적인 알고리즘입니다 #include int main(void) { int i, j, temp; int array[10] = {1, 10, 5, 8, 7, .. 2022. 3. 7.
[알고리즘-1] 선택 정렬 안녕하세요 기린입니다 :) 알고리즘을 공부할 때 가장 먼저 풀어보는 문제로 '정렬(Sort)' 에 대해 알아보겠습니다. 수많은 알고리즘 중에서 이 정렬 알고리즘은 효율성의 차이를 극명하게 보여주기 때문에 단계적으로 공부하시면 효과적일 것 같습니다 자 바로 간단한 문제부터 시작해보겠습니다 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요. 1 10 5 8 7 6 4 3 2 9 위와 같은 문제를 만났을때 여러분들은 어떻게 푸실 건가요? 만약 처음 알고리즘을 공부하시는 분들이라면 머릿속이 복잡하실수도 있습니다.. 하하 만약 사람이라면 전체 숫자를 확인하고 1부터 10까지 숫자를 써내려 가겠죠 ? 하지만 컴퓨터에게는 그 과정을 구체적으로 명시해줘야 제대로 작동할 수 있습니다 그 과정을 알고리즘이라고 할.. 2022. 3. 6.