문제: 하나의 단어가 사전적 의미로써의 단어가 아닌, 단순한 알파벳의 조합이라고 생각해보자. 두 글자 이상이 들어간 단어라면, 알파벳 순서만 바꿔 똑같은 글자가 들어간 다른 단어를 만들어 낼 수 있다. 영단어 'stationarily'와 'antiroyalist'는 모두 사전에서 찾을 수 있는 단어이지만, 동시에 같은 알파벳으로 글자의 순서 조합만 바꾼 것이기도 하다. 사전에는 없는 단어지만 저 단어들에 들어간 알파벳을 사용해 alianrostily라는 단어도 임의로 만들 수 있다. 그렇다면, 위의 알파벳 글자들을 사용해 조합해낼 수 있는 글자들에 고유 숫자를 매길 수도 있을 것이다. 가능한 단어 조합 목록을 전부 나열한 뒤 필요한 단어를 찾는 것이 하나의 방법이 될 수도 있을 것이다. 그러나 단어의 길이가 길어질 경우 그 과정에는 긴 시간이 소요되게 된다. 단어를 명령 행 인수(command line argument)로써 받아들이고 그것의 숫자를 출력하는 표준을 인쇄하는 프로그램을 작성하라. 위에 제시된 전체 리스트 수집 방식은 이용할 수 없다. 프로그램은 중복 포함 최대 25자의 단어를 받아들일 수 있어야 한다. 메모리는 1 기가를 넘겨선 안되고 구동 시간은 500 밀리세컨드 이내여야 한다. |