아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

애너그램

시간 제한1초메모리 제한128 MB

요약
주어진 단어마다 글자를 재배열해 만들 수 있는 서로 다른 문자열을 사전순으로 중복 없이 모두 출력한다.
난이도

보통10점 중 6점

유형
백트래킹, 정렬, 재귀, 조합론
정답자
아직 제출이 없습니다

문제

애너그램(anagram) 프로그램은 입력받은 영단어의 철자들을 재배열하여 만들 수 있는 모든 단어를 출력한다. 예를 들어 abc 를 입력받으면 abc, acb, bac, bca, cab, cba 를 출력한다.

한 단어 안에 같은 철자가 여러 번 나올 수 있으며, 이때 같은 문자열이 여러 번 만들어질 수 있다. 같은 문자열은 한 번만 출력한다. 또한 각 단어의 애너그램은 사전 순(알파벳 순)으로 정렬하여 출력한다.

입력

첫째 줄에 단어의 개수 NN이 주어진다. 다음 NN개의 줄에는 각 줄마다 하나의 영단어가 주어진다. 모든 단어는 소문자 알파벳으로만 이루어져 있고, 길이는 20 이하이다. 서로 다른 애너그램의 개수가 100,000개 이하인 단어만 입력으로 주어진다.

출력

각 단어마다 만들 수 있는 모든 애너그램을 한 줄에 하나씩 출력한다. 한 단어의 애너그램들은 사전 순으로 정렬하고, 중복은 제거하여 한 번씩만 출력한다.

예제3

  1. 예제 1

    입력
    2
    abc
    acba
    
    예상 출력
    abc
    acb
    bac
    bca
    cab
    cba
    aabc
    aacb
    abac
    abca
    acab
    acba
    baac
    baca
    bcaa
    caab
    caba
    cbaa
    
  2. 예제 2

    입력
    1
    a
    
    예상 출력
    a
    
  3. 예제 3

    입력
    1
    aab
    
    예상 출력
    aab
    aba
    baa