https://www.hackerrank.com/challenges/correctness-invariant/problem
Correctness and the Loop Invariant | HackerRank
How do you demonstrate the correctness of an algorithm? You can use the loop invariant.
www.hackerrank.com
<문제>

배열의 크기를 입력받고, 배열의 원소들을 크기만큼 입력받아서 배열에 저장한다. 완성된 배열을 insertion sort를 통해 정렬하고 화면에 출력한다.
<코드>
#include <stdio.h>
#pragma warning(disable:4996)
#define n 10000
int main()
{
int size, arr[n], i, temp, j;
scanf("%d", &size);
for (i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
for (i = 1; i < size; i++) //insertion sort code
{
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp)
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
for (i = 0; i < size; i++)
{
printf("%d ", arr[i]);
}
}
<풀이>
1. sanf("%d", &size); 로 배열의 크기를 입력받고 그 아래 for문을 통해 배열의 원소들을 모두 입력받는다.
2. for문을 통해 insertion sort를 하였다.
- i번째 배열을 temp에 저장하고, j=i-1을 하여 arr[i-1]과 arr[i], 즉 temp와 비교한다.
- arr[i-1]이 arr[i]보다 큰 동안 arr[i-1]의 값을 arr[i]에 대입한다.
- arr[i-1]이 arr[i]보다 작으면 arr[i]에 temp값을 저장한다.
3. 정렬한 배열을 출력하였다.
<제출 결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Search- IceCream Parlor (0) | 2021.05.07 |
|---|---|
| [HackerRank] Boxes through a Tunnel (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 |