아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

최소 차이

시간 제한1초메모리 제한128 MB

요약
주어진 서로 다른 숫자들을 두 개의 비어 있지 않은 집합으로 나누고 각각 앞자리에 0이 오지 않도록 배열해 만든 두 정수의 차의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
완전 탐색, 백트래킹, 수학, 그리디
정답자
아직 제출이 없습니다

문제

서로 다른 십진수 숫자 여러 개가 주어진다. 이 숫자들 중 비어 있지 않은 부분집합을 골라 어떤 순서로 나열하여 하나의 정수를 만든다. 남은 숫자들(이 역시 비어 있지 않다)을 어떤 순서로 나열하여 두 번째 정수를 만든다. 두 정수는 모두 맨 앞자리에 숫자 0이 올 수 없다. 단, 그 정수가 정확히 0인 경우는 예외이다.

예를 들어 숫자 0, 1, 2, 4, 6, 7이 주어지면 10과 2467이라는 정수 쌍을 만들 수 있다. 이러한 쌍은 여러 가지가 있는데, 210과 764, 204와 176 등이 있다. 이 중 204와 176의 절댓값 차이는 28이며, 위 규칙에 따라 만들 수 있는 어떤 쌍도 이보다 더 작은 차이를 얻을 수 없다.

주어진 숫자로 만들 수 있는 두 정수의 절댓값 차이의 최솟값을 구하여라.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄에 2개 이상 10개 이하의 십진수 숫자(0부터 9까지)로 이루어진다. 한 줄에서 같은 숫자는 두 번 이상 나타나지 않으며, 숫자들은 정확히 한 칸의 공백으로 구분되어 증가하는 순서로 주어진다.

출력

각 테스트 케이스마다, 위 규칙에 따라 주어진 숫자로 만들 수 있는 두 정수의 절댓값 차이의 최솟값을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    1
    0 1 2 4 6 7
    
    예상 출력
    28
    
  2. 예제 2

    입력
    4
    0 1
    5 9
    0 1 2
    0 1 2 4 6 7
    
    예상 출력
    1
    4
    8
    28