C# 프로그래밍 기초 실습 전자책

C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.


퀴즈 질문


예상답변/설명

먼저 문자열의 첫문자를 기준으로 1~N개의 문자들을 이용 가능한 모든 조합을 구하고, 계속해서 첫문자를 제외하고 다음 문자를 기준으로 2~N 문자들을 이용 가능한 모든 조합을 구한다. 이러한 방식으로 계속 Recursive를 이용하여 조합을 구하면 전체 문자 조합을 구할 수 있다.

public void RunTest()
{
    StringBuilder sb = new StringBuilder();
    StringCombination("ABC", sb, 0);
}

void StringCombination(string s, StringBuilder sb, int index)
{
    for (int i = index; i < s.Length; i++)
    {
        // 1) 한 문자 추가
        sb.Append(s[i]);

        // 2) 구한 문자조합 출력
        Console.WriteLine(sb.ToString());

        // 3) 나머지 문자들에 대한 조합 구하기
        StringCombination(s, sb, i + 1);

        // 위의 1에서 추가한 문자 삭제 
        sb.Remove(sb.Length - 1, 1);
    }
}