본문 바로가기
알고 있으면 유용한 것들

백준 2750 오름차순 정리 나의 c언어 해답

by 긍정왕수전노 2022. 2. 6.
반응형

하...

버블sort를 몰랐다.

시간복잡도 big-O도 코드가 긴거 대비 O(n^2).....

코딩테스트를 미리미리 준비해야 하는 이유다.

#include <stdio.h>
#include <string.h>

int main(void)
{
    int nInputArray[1000], nTemp[1000];
    int nIter, nInput;
    scanf("%d\n", &nIter);
    
    for(int i = 0; i < nIter; i++)
    {
        scanf("%d\n", &nInput);
        if(i == 0)
        {
           nInputArray[0] = nInput;
        }
        else
        {
            if(nInputArray[0] > nInput)
            {
                memcpy(&nTemp[0], &nInputArray[0], sizeof(int)*i);
                memcpy(&nInputArray[0] + 1, &nTemp[0], sizeof(int)*i);
                nInputArray[0] = nInput;
            }
            else if(nInputArray[i-1] < nInput)
            {
                nInputArray[i] = nInput;
            }
            else    // 중간에 껴있는 번호
            {
                for(int j = 0; j < i; j++)
                {
                    if(nInputArray[j] < nInput && nInputArray[j+1] > nInput)
                    {
                        memcpy(&nTemp[0], &nInputArray[0] + j + 1, sizeof(int)*(i-j));
                        memcpy(&nInputArray[0] + j+2, &nTemp[0], sizeof(int)*(i-j));
                        nInputArray[j+1] = nInput;
                    }
                }
            }
        }
    }
    
    for(int k = 0; k < nIter; k++)
    {
        printf("%d\n", nInputArray[k]);
    }
    
    return 0;
}
반응형