<sorting 문제>
https://www.hackerrank.com/challenges/insertionsort1/problem
Insertion Sort - Part 1 | HackerRank
Insert an element into a sorted array.
www.hackerrank.com
<문제>

<코드>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
void insertsort(int size, int* arr) {
int val = arr[size - 1], on = 0;
for (int i = size - 1; i >= 0; i--) {
if (val < arr[i - 1]) {
arr[i] = arr[i - 1];
}
else {
arr[i] = val;
on = 1;
}
for (int j = 0; j < size; j++) {
printf("%d ", arr[j]);
}
printf("\n");
if (on == 1)
break;
}
}
int main(void) {
int n = 0, i = 0;
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
insertsort(n, arr);
return 0;
}
<풀이>
1. 배열 arr의 크기인 n을 입력받아 arr 배열을 생성했다.
2. insertsort() 함수를 정의했다.
-배열의 크기 n과 배열 arr을 넘겨받고, arr[n-1]의 값, 즉 배열의 마지막 값을 val 변수에 저장한다.
-val값과 배열의 값을 하나씩 비교한다.
-비교했을 때, val 값보다 arr[i-1]값이 더 크면 arr[i]에 arr[i-1]값을 복사하고 printf를 통해 배열을 출력한다.
-val 값과 arr[i-1] 값이 같으면 arr[i]에 val 을 넣고 배열을 출력한 뒤 insertsort() 함수를 종료한다.
<제출결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Boxes through a Tunnel (0) | 2021.04.07 |
|---|---|
| [HackerRank] Sorting-Correctness and the Loop Invariant (0) | 2021.04.07 |
| [HackerRank] Divisible Sum Pairs (0) | 2021.04.03 |
| [HackerRank] Insertion Sort-Part2 (0) | 2021.04.03 |
| [HackerRank] Number Line Jumps (0) | 2021.03.26 |