노말 정렬

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

요약
문자열 안의 숫자 구간을 부호까지 고려해 수치로 비교하고 문자는 대소문자를 무시하는 커스텀 정렬 비교 함수를 구현해 여러 문자열 쌍의 순서를 판정하는 문제입니다.
난이도

보통10점 중 5점

유형
문자열, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

일반적인 사전식 정렬에서는 숫자가 섞인 문자열이 의도한 순서로 놓이지 않을 수 있다. 예를 들어 xyz100은 xyz2보다 앞에 온다. 이 문제에서는 문자열 안의 숫자 구간을 숫자값으로 비교하는 노말 정렬의 비교 함수를 작성한다. 노말 정렬에서는 다음과 같은 순서가 된다.

XYZ001, XYZ2, XYZ003, XYZ08, XYZ23, XYZ100, XYZQ

이 문제의 비교 규칙은 다음과 같이 확장된다.

  1. 알파벳의 대소문자는 구분하지 않고 모두 대문자로 취급한다.
  2. + 또는 -가 숫자 바로 뒤에 있지 않고, 그 다음 문자가 숫자라면 이어지는 숫자 구간의 부호로 취급한다. 숫자 바로 뒤에 있는 + 또는 -는 일반 문자로 비교한다.

따라서 123+456+7890은 + 문자로 구분된 세 숫자 구간을 가진 문자열이고, A+003은 A3과 같은 순서로 비교된다.

각 데이터 세트마다 공백 없는 출력 가능한 ASCII 문자열 두 개가 주어진다. 위 규칙으로 두 문자열을 비교하여 첫 번째 문자열이 앞서면 -1, 같은 순서이면 0, 두 번째 문자열이 앞서면 1을 출력한다.

입력

첫째 줄에 데이터 세트 수 N (1 ≤ N ≤ 1000)이 주어진다. 이어지는 N개의 줄에는 비교할 문자열 두 개가 공백 하나로 구분되어 주어진다. 두 문자열에는 공백이 포함되지 않는다.

출력

각 데이터 세트마다 비교 결과 -1, 0, 1 중 하나를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5
    x-3 X0001
    123-456-7890 123+456+7890
    xYz000123J XyZ+123j
    #$%^&*[]- abcdefgh
    Abc47jKL+00123 ABC+47jkL123
    
    예상 출력
    -1
    1
    0
    -1
    0