시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 36 | 8 | 3 | 20.000% |
동일이는 어느 날 혼자서 할 수 있는 재미있는 놀이 하나를 생각해냈다.
이 놀이는 N개의 알파벳 소문자로 이루어진 문자열 하나로 시작된다.
동일이는 이 문자열의 임의의 두 글자를 서로 바꿀 수 있다. 이 행동은 0번 혹은 그 이상 원하는 할 수 있다.
목표는 사전순으로 가장 앞선 문자열을 만드는 것이다.
하지만 몇 번 게임을 하던 동일이는 아무래도 게임이 너무 쉽다고 생각하여 규칙 하나를 추가했다.
결과물이 될 문자열의 각 위치마다, 그 위치에 올 수 있는 문자를 정해 둔다.
예시는 다음과 같다.
이 규칙은 최종 결과물이 될 문자열에만 성립하며, 놀이 도중 만들어지는 문자열은 위의 규칙을 따르지 않아도 상관없다.
위의 규칙을 추가하자 놀이가 너무 어려워졌다.
동일이를 도와 규칙을 잘 지키면서 사전순으로 가장 앞서는 문자열이 무엇인지 찾아주도록 하자.
첫 줄에 테스트 케이스의 수 T가 주어진다. ( 1 ≤ T ≤ 100 )
각 테스트 케이스의 첫 줄엔 놀이에 사용할 초기 문자열 S가 주어진다.
문자열은 N개의 알파벳 소문자로 이루어져 있다. ( 1 ≤ N ≤ 100 )
이어 N줄에 걸쳐 문자열 Ci가 주어진다. Ci는 Li개의 문자를 포함하며, 결과물의 i번째 글자에 올 수 있는 문자들의 목록이다. ( 1 ≤ Li ≤ 5 )
Ci에 등장하는 모든 문자는 초기 문자열 S에 최소한 한 번 이상 등장한다.
각 테스트 케이스마다, 규칙을 지키며 만들 수 있는 사전순으로 가장 앞선 문자열을 출력한다. 만약 규칙대로 만들 수 있는 문자열이 존재하지 않는다면 NO SOLUTION을 출력한다.
2 abcde abcde a abcde abcde abcde abcde ab ab ab abcde abcde
bacde NO SOLUTION
ICPC > Regionals > Africa and Arab > Arab Collegiate Programming Contest > 2012 Arab Collegiate Programming Contest E번