본문으로 바로가기

[풀이 - Insertion Sort - Part 2] : <Easy / 97.21%>

더보기
void CheckArray(vector<int>& arr, int idx)
{
    int value = arr[idx];
    //
    for(int i = idx - 1; i >= 0; --i)
    {
        if(arr[i] > value)
        {
            arr[i+1] = arr[i];
            if(i == 0)
                arr[i] = value;
        }
        else
        {
            arr[i+1] = value;
            return;
        }
    }
}
//
void PrintArray(const vector<int>& arr)
{
    for(int i = 0; i < arr.size(); ++i)
        cout << arr[i] << " ";
    //
    cout << endl;
}
//
void insertionSort2(int n, vector<int> arr)
{
    for(int i = 1; i < n; ++i)
    {
        CheckArray(arr, i);
        //
        PrintArray(arr);
    }
}

 


[풀이 - Correctness and the Loop Invariant] : <Easy / 98.57%>

더보기
void insertionSort(int N, int arr[])
{
    int i,j;
    int value;
    for(i=1;i<N;i++)
    {
        value=arr[i];
        j=i-1;
        // change 'j>0' -> 'j>=0'
        while(j>=0 && value<arr[j])
        {
            arr[j+1]=arr[j];
            j=j-1;
        }
        arr[j+1]=value;
    }
    for(j=0;j<N;j++)
    {
        printf("%d",arr[j]);
        printf(" ");
    }
}

 


[풀이 - Caesar Cipher] : <Easy / 85.99%>

더보기
char encrypt(char c, int k)
{
    bool isLower = ('a' <= c && c <= 'z');
    bool isUpper = ('A' <= c && c <= 'Z');
    //
    if( !isLower && !isUpper )
        return c;
    //
    char min, max;
    if(isLower)
        min = 'a', max = 'z';
    else
        min = 'A', max = 'Z';
    //
    int result = c + (k % 26);
    if(result > max)
        result = (result - (int)max - 1) + (int)min;
    //
    return result;
}
//
string caesarCipher(string s, int k)
{
    for(int i = 0; i < s.size(); ++i)
        s[i] = encrypt(s[i], k);
    //
    return s;
}