Prgramming/자료구조

[자료구조] 정렬된 문자열 출력하기

맏난거 2025. 1. 17. 01:02
// aa ab ac ad ... az
// ba bb bc bd ... bz
// ca cb cc cd ... cz
// ...
// za zb zc zd ... zz

// 조건 => 문자 정렬된것만 출력해라 
// 출력예시 =>  aa ab ac ...
//              bb bc bd ...
//              cc cd ce ...

SortedStrings.PrintSortedStrings(2);

class SortedStrings
{
    public static int C = 26; // 알파벳 수
    public static int length = 0; // 문자열의 길이

    public static void PrintSortedStrings(int k)
    {
        length = k;
        PrintSortedStrings(k, "");
    }

    public static void PrintSortedStrings(int k, string prefix)
    {
        if(k <= 0)
        {
            if(isOrder(prefix)) 
                Console.Write(prefix + " "); 
        }
        else
        {
            for (int i = 0; i < C; i++)
            {
                if (length == k) Console.WriteLine();
                char c = GetLetter(i);
                PrintSortedStrings(k - 1, prefix + c);
            }
        }
    }

    private static bool isOrder(string s)
    {
        for(int i = 1; i < s.Length; i++)
        {
            char prev = s[i - 1];
            char curr = s[i];
            if(prev > curr) return false;
        }
        return true;
    }

    private static char GetLetter(int i)
    {
        return (char)((int)'a' + i);
    }
}

'Prgramming > 자료구조' 카테고리의 다른 글

[자료구조] Stack, Queue, SingleLinkedList  (4) 2025.01.19
[자료구조] DoubleLinkedList  (1) 2025.01.18
[자료구조] 피보나치 수열  (6) 2025.01.16