HackerRank/Algorithms 36

[HackerRank] Sorting : Find the Median

배열을 오름차순으로 정렬한 후, 가운데 값을 출력하는 문제이다. void insertion_sort(int list[], int n){ int i, j, key; for(i = 1; i = 0 && list[j] > key; j--){ list[j+1] = list[j]; } list[j+1] = key; } } int findMedian(int arr_count, int* arr) { insertion_sort(arr, arr_count); return arr[(arr_count-1)/2]; } 삽입정렬을 이용해 배열을 정렬하고 가운데 값을 반환해준다. 삽입정렬은 정렬된 앞부분과 자신을 비교해 자신의 위치를 찾아 삽입하는 알고리..

[HackerRank] Sorting : Insertion Sort - Part 2

문제 arr[0]과 arr[1]을 비교해 arr[0] > arr[1]이면 arr[0]이 자리를 찾아갈 때까지 왼쪽으로 이동한다. 왼쪽으로 이동한다는 것을 생각했으면 빨리 풀었을텐데, 이중 for문 쓰는 거에 정신이 팔려 한참 고민했다. j가 감소하는 경우를 생각하지 못하고 계속 증가하는 방향으로만 머리를 쓰니 안풀릴수밖에... 증가하는 방식으로 풀려면 매우 복잡해질 것 같다. // Complete the insertionSort2 function below. void insertionSort2(int n, int arr_count, int* arr) { int temp; for(int i=0; i arr[i+1]){ for(int j=i+1; j>=0; j--){ if(arr[j] < arr[j-1]){..

[HackerRank(C)] Sorting : Insertion Sort - Part 1

문제 링크 Insertion Sort - Part 1 | HackerRank Insert an element into a sorted array. www.hackerrank.com Algorithm > sorting > Insertion Sort n이 5이면 배열은 5만큼 입력받는다. arr[1,2,4,5,3]이 입력으로 들어왔을 때, 가장 오른쪽에 있는 arr[4] = 3을 왼쪽값과 비교하면서 오름차순으로 정렬되도록 위치시키면 된다. arr[3] > arr[4] = 3 이므로 arr[4]는 arr[3] arr[2] > 3 이므로 arr[3] = arr[2] arr[1] < 3 이므로 arr[2] = 3 코드 // Complete the insertionSort1 function below. void i..