문제
Alice와 Bob은 각자 n장의 카드를 갖고 있는데 각 카드에는 보다 크거나 같고, 보다 작거나 같은 숫자가 하나씩 적혀 있다. 두 사람은 각자 자신이 가진 카드를 이용해서 최대 자리의 수를 만들 수 있고, 더 큰 수를 만든 사람이 이긴다.
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가 만들 수 있는 가장 큰 수를 구해보자.