카드 게임
면접 대비시간 제한1초메모리 제한512 MB
밥이 늘어놓은 숫자 카드와 앨리스의 카드가 주어질 때, 밥이 왼쪽에서 읽든 오른쪽에서 읽든 그 수보다 작으면서 앨리스가 만들 수 있는 가장 큰 수를 구한다.
문제
Alice와 Bob은 각자 장의 카드를 갖고 있고, 각 카드에는 이상 이하의 숫자가 하나씩 적혀 있다. 두 사람은 각자 자신이 가진 카드로 최대 자리의 수를 만들 수 있으며, 더 큰 수를 만든 사람이 이긴다.
Bob은 아직 어려서 큰 수를 만드는 방법을 잘 모른다. 대신 자신이 가진 카드를 바닥에 좌우로 순서대로 나열한 뒤, 좌에서 우로 읽어 만든 수와 우에서 좌로 읽어 만든 수 가운데 아무 수나 고르는 전략을 쓴다. 예를 들어 Bob이 바닥에 나열한 카드의 순서가 라면 Bob은 좌에서 우로 읽어 를 만들 수도 있고, 우에서 좌로 읽어 를 만들 수도 있다.
Alice는 동생 Bob이 이기게 해 주고 싶어서 다음 규칙에 따라 플레이한다.
- 먼저 Bob이 바닥에 카드를 내려놓을 때까지 기다린다.
- Bob이 좌에서 우로 읽든 우에서 좌로 읽든, Bob이 만든 수가 Alice의 수보다 커지도록 해서 동생이 이기게 해 주고 싶다. 단, 카드를 최소 한 장은 사용해야 한다.
- Bob이 이기게 하는 방법 가운데 자신이 만들 수 있는 가장 큰 수를 만들고 싶다.
예를 들어 Bob이 순서로 카드를 바닥에 나열했고, Alice가 가진 카드가 이라 하자.
- Alice가 만들 수 있는 세 자리 수는 , , , , , 로 모두 여섯 가지다.
- Bob이 와 가운데 어떤 수를 만들지 모르므로, Alice가 을 만들면 Bob이 어떤 수를 만들더라도 이기게 해 줄 수 있고, 그 가운데 Alice가 만들 수 있는 가장 큰 수가 된다.
다른 예로, Bob이 를 가지고 있고 Alice가 를 가지고 있다 하자.
- Bob이 만들 수 있는 수는 좌에서 우로 읽은 경우와 우에서 좌로 읽은 경우 모두 로 같다.
- Alice가 만들 수 있는 세 자리 수는 로 보다 크므로, Alice는 카드 세 장을 모두 사용해서는 Bob이 이기게 해 줄 수 없다.
- Alice가 만들 수 있는 두 자리 수에는 가 있고, 이것이 이 예의 답이 된다.
입력으로 과 두 사람이 가진 카드에 적힌 값이 주어졌을 때, Alice가 만들 수 있는 가장 큰 수를 구해 보자.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스는 세 줄에 걸쳐 주어진다.
첫째 줄에 이 주어진다.
둘째 줄에 Bob이 가진 카드에 적힌 숫자가 공백 없이 주어진다. Bob은 이 순서대로 바닥에 카드를 내려놓는다.
셋째 줄에 Alice가 가진 카드에 적힌 숫자가 공백 없이 주어진다.
출력
각 테스트 케이스의 정답을 한 줄에 하나씩 출력한다.