C언어 pancake sorting 질문드립니다.

조회수 217회
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/// 함수 선언
void flip(int arr[], int i);
int findMax(int arr[], int n);
void pancakeSort(int arr[], int n);

// 배열 요소를 뒤집는 함수
void flip(int arr[], int i)
{
    int temp, start = 0;
    while (start < i)
    {
        temp = arr[start];
        arr[start] = arr[i];
        arr[i] = temp;
        start++;
        i--;
    }
}

// 배열에서 최대값의 인덱스를 찾는 함수
int findMax(int arr[], int n)
{
    int max = 0;
    for (int i = 0; i < n; ++i)
    {
        if (arr[i] > arr[max])
            max = i;
    }
    return max;
}

// 팬케이크 정렬 함수
void pancakeSort(int arr[], int n)
{
    for (int curr_size = n; curr_size > 1; --curr_size)
    {
        int max = findMax(arr, curr_size);
        if ((max != curr_size - 1) && (max != 0))
        {
            flip(arr, max);
            printf("%d ", n - max);

        }
        if ((max != curr_size - 1) && (max == 0))
        {
            flip(arr, max);
            flip(arr, curr_size - 1);
            printf("%d ", n - (curr_size - 1));
        }

    }
    printf("0\n");
}
int main()
{
    int arr[] = { 5, 1, 2, 4, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("Original Array: ");
    for (int i = 0; i < n; ++i)
        printf("%d ", arr[i]);
    printf("\n");

    pancakeSort(arr, n);

    printf("Sorted Array: ");
    for (int i = 0; i < n; ++i)
        printf("%d ", arr[i]);
    printf("\n");

    return 0;
}

이렇게 했는데 중간에 몇번째 층(가장 오른쪽 숫자가 1층이라고 했을때)에서 뒤집는지를 순서대로 출력해야하는데 '1 4 2 0' 이 아니라 '1 4 3 0' 으로 출력됩니다. 어떻게 고쳐야 제대로 출력할 수 있을까요? 조언 부탁드립니다 감사합니다

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

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

(ಠ_ಠ)
(ಠ‿ಠ)