혜랑's STORY

[HackerRank] Counting Sort 2 본문

2021 SISS 21기 활동/여름방학 C언어

[HackerRank] Counting Sort 2

hyerang0125 2021. 8. 5. 22:37

# 문제

# 풀이

int* countingSort(int arr_count, int* arr, int* result_count) {
    int *temp = malloc(sizeof(int)*100);
    memset(temp, 0, sizeof(int)*100);
    for(int i=0; i<arr_count; i++)
        temp[arr[i]]++;
    
    *result_count = arr_count;
    int *result = malloc(sizeof(int)*(*result_count));
    int result_pos = 0;
    for(int i=0; i<100; i++){
        while(temp[i] != 0){
            result[result_pos++] = i;
            temp[i]--;
        }
    }
    return result;
}
  • arr_count만큼 for문을 돌며 counting sorting한다.
  • result 배열의 크기는 arr_count와 동일하고, 존재할 수 있는 최대 수인 100까지 for문을 돌며 result 배열에 값을 채워 넣을 것이다.
  • 앞서 temp 배열을 0으로 초기화 해 놓았기 때문에 해당 숫자에 카운팅된 값이 0이 아닐 때까지 result 배열에 그 수를 넣고 카운팅 횟수를 1 줄여주는 것을 반복한다.
  • result를 반환하고 프로그램을 종료한다.

# 결과

'2021 SISS 21기 활동 > 여름방학 C언어' 카테고리의 다른 글

[HackerRank] Funny String  (0) 2021.08.12
[HackerRank] Sherlock and Cost  (0) 2021.08.12
[HackerRank] Counting Sort 1  (0) 2021.08.05
[HackerRank] Left Rotation  (0) 2021.07.31
[HackerRank] CamelCase  (0) 2021.07.31