heapsort 관련해서 문자열 스왑해서 출력하려고하는데 오류가 나요

조회수 244회

숫자는 잘 정렬이 되는데 문자열을 함께 반환해야하는데 그게 잘 안되네요ㅜㅜ 도와주세요ㅜㅜ

#include<stdio.h>
int heap_size, arr_size;
struct Data {
    int year[1024];
    char name[1024];
}arr[1024];
void swap(int arr[], int a, int b) { int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp; }
void heapify(int arr[], int p_idx, int h_size)
{
    int largest = p_idx;
    int l_idx = p_idx * 2 + 1;
    int r_idx = p_idx * 2 + 2;
    if (l_idx<h_size&&arr[l_idx]>arr[largest]) largest = l_idx;
    if (r_idx<h_size&&arr[r_idx]>arr[largest]) largest = r_idx;
    if (largest != p_idx) {
        swap(arr, largest, p_idx);
        heapify(arr, largest, h_size);
    }
}
void build_heap(int arr[], int h_size)
{
    for (int i = (h_size / 2) - 1; i >= 0; i--)
        heapify(arr, i, h_size);
}

void heap_sort(int arr[])
{
    build_heap(arr, heap_size);
    for (int last_idx = heap_size - 1; last_idx >= 0; last_idx--) {
        swap(arr, 0, last_idx);
        heapify(arr, 0, last_idx);
    }
}
void printf_arr(int arr1[],char arr2[], int size)
{
    for (int i = 0; i < size; i++) {
        printf("%d", arr1[i]);
        printf("%s\n", arr2[i]);
    }
}
int main()
{
    scanf("%d", &arr_size);
    heap_size = arr_size;
    for (int i = 0; i < heap_size; i++) {
        scanf("%d", &arr->year[i]);
        scanf("%s", &arr->name[i]);
    }
    printf_arr(arr->year,arr->name, heap_size);
    build_heap(arr->year,heap_size);
    printf_arr(arr->year, arr->name, heap_size);
    heap_sort(arr->year);
    printf_arr(arr->year, arr->name, heap_size);
    return 0;
}

입력값입니다! 10 1876 a 1875 b 1885 c 1884 d 1907 e 1905 f 1937 g 1919 h 1920 i 1940 j

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)