E D R , A S I H C RSS

Doublets


인기도:C(A,B,C), 성공률:보통(낮음,보통,높음), 레벨:3(1~4)

About Doublets

글자만 서로 다른 쌍의 단어를 더블릿이라고 부른다. 예를 들어 'booster'와 'rooster', 'rooster'와 'roaster', 'roaster'와 'roasted' 등은 모두 더블릿이다.

단어의 최대 길이는 16글자고 최대 25,143개의 단어(모두 소문자)가 들어있는 사전이 주어진다. 그리고 몇 쌍의 단어가 주어진다. 각 쌍의 단어에 대해 첫번째 단어로 시작해서 두번째 단어로 끝나고, 서로 인접 각 단어 쌍이 더블릿인 가장 짧은 단어 시퀀스를 찾아라. 예를 들어 'booster'와 'roasted'라는 단어 쌍이 입력되면, 그리고 여기에 있는 단어들이 모두 사전에 들어있으면 'booster', 'rooster', 'roaster', 'roasted'라는 시퀀스가 답이 될 수 있다.

Input

입력은 사전과 몇 쌍의 단어로 이루어져있다. 사전은 몇 개의 단어로 구성되는데 줄에 단어씩 들어가며 사전이 끝나면 빈 줄이 개 입력된다. 그 다음 줄부터는 각 줄마다 쌍씩의 단어가 입력되며 줄에 있는 두 단어는 스페이스에 의해 구분된다.

output

입력된 각 단어 쌍에 대해 첫번째 단어로 시작해서 두번째 단어로 끝나는 가장 짧은 단어 시퀀스를 줄에 단어씩 출력다. 위 아래에 있는 두 단어는 더블릿이어야 다.

가장 짧은 시퀀스가 여러 개 나오면 그 중 아무 시퀀스나 출력해도 된다. 답이 없으면 ~cpp "No solution."이라고 출력다. 각 케이스 사이에는 빈 줄을 하나씩 집어넣는다.

Sample Input

~cpp 
booster
rooster
roaster
coasted
roasted
coastal
postal

booster roasted
coastal postal

Sample Output

~cpp 
booster
rooster
roaster
roasted

No solution.

풀이

작성자 사용언어 개발시간 코드
문보창 C++ 하룻밤 Doublets/문보창
황재선 Java 2h30m Doublets/황재선

쓰레드

아~ 완전 어려워요 - 이승

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:09
Processing time 0.0113 sec