더북(TheBook)

위 알고리즘을 코드로 나타내면 다음과 같다.

public static void permuteAndPrint(String str) {
  permuteAndPrint("", str);
}

private static void permuteAndPrint(String prefix, String str) {
  int n = str.length();

  if (n == 0) {
    System.out.print(prefix + " ");
  } else {
    for (int i = 0; i < n; i++) {
      permuteAndPrint(prefix + str.charAt(i),
        str.substring(i + 1, n) + str.substring(0, i));
    }
  }
}

최초 접두사는 빈 문자열인 ""이어야 한다. 반복할 때마다 접두사에 문자열의 다음 문자를 이어 붙인다(고정한다). 메서드를 진행하며 남은 글자들을 다시 전달한다.

위 메서드가 Strings라는 유틸리티 클래스에 들어 있다고 가정해보자. 그럼 아래처럼 호출할 수 있다.

Strings.permuteAndStore("ABC");

결과는 다음과 같을 것이다.

ABC ACB BCA BAC CAB CBA

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.