팰린드롬 날짜

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

요약
주어진 날짜 다음으로 YearMMDD 문자열이 팰린드롬이 되는 날짜를 찾는 문제로, 큰 연도 범위와 윤년 처리를 요구한다.
난이도

보통10점 중 6점

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

문제

어떤 날짜가 팰린드롬(회문)이 되려면, 그 날짜를 "연도MMDD" 형태의 문자열로 썼을 때 앞에서 읽으나 뒤에서 읽으나 같아야 합니다. 여기서 연도는 앞에 0을 붙이지 않고 그대로 쓰고, 월(MM)과 일(DD)은 각각 두 자리로 씁니다. 예를 들어 "1년 1월 1일"은 "10101"이 되어 팰린드롬이고, "1021년 12월 1일"은 "10211201"이 되어 팰린드롬입니다.

날짜가 하나 주어졌을 때, 그 날짜 다음에 오는 팰린드롬 날짜를 찾는 프로그램을 작성하세요.

이 문제에서 연도는 11 이상 21474836472147483647 이하입니다. 또한 윤년도 계산해야 합니다. 윤년은 그레고리력 규칙을 따르며, 연도가 44의 배수이면서 100100의 배수가 아니거나, 400400의 배수인 해입니다. 윤년의 22월은 2929일까지 있습니다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어집니다. 각 테스트 케이스는 한 줄로 이루어지며, 날짜가 일/월/연도 형태로 주어집니다. 월과 일에는 앞에 0이 붙어 있을 수도 있고 없을 수도 있습니다. 예를 들어 2011년 7월 4일은 "04/07/2011", "4/07/2011", "4/7/2011", "04/7/2011" 중 어떤 형태로도 주어질 수 있습니다.

출력

각 테스트 케이스마다, 입력으로 주어진 날짜 다음에 오는 팰린드롬 날짜를 일/월/연도 형태로 출력합니다. 연도의 첫 번째 숫자는 0이 될 수 없고, 월과 일은 항상 두 자리로 출력합니다(예: 1이 아니라 01, 2가 아니라 02). 입력으로는 항상 다음 팰린드롬 날짜가 존재하는 경우만 주어집니다.

예제5

  1. 예제 1

    입력
    3
    1/1/1
    12/11/1
    01/06/138048967
    
    예상 출력
    01/02/1
    11/12/1
    31/08/138048984
    
  2. 예제 2

    입력
    1
    4/7/2011
    
    예상 출력
    02/11/2011
    
  3. 예제 3

    입력
    1
    04/07/2011
    
    예상 출력
    02/11/2011
    
  4. 예제 4

    입력
    1
    31/12/1
    
    예상 출력
    02/01/2
    
  5. 예제 5

    입력
    1
    28/02/9220
    
    예상 출력
    29/02/9220