즐거운 하루

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

요약
각 날짜에서 일, 월, 연도의 모든 자릿수가 같은 횟수로 나타나는지 확인하고, 일, 월, 연도의 두 반쪽을 합이 같은 두 묶음으로 나눌 수 있는지 판정한다.
난이도

보통10점 중 4점

유형
구현, 완전 탐색, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

P 대 NP 문제가 마침내 해결되었다는 소문이 있다. 두 클래스가 서로 같지 않다는 것이다. 그렇다면 외판원 문제(TSP)와 같은 어려운 문제들은 영원히 어려운 채로 남고, 사실상 완전 탐색으로만 풀 수 있다. 어쩔 도리가 없다.

이에 정부는 특정한 날에는 누구도 그런 어려운 문제에 매달려서는 안 되며, 대신 더 쉬운 문제에 집중해야 한다고 선포했다. 이런 날을 좋은 날(nice) 이라고 부른다. 당연히 어떤 날짜가 좋은 날인지 판별하는 규칙 자체는 쉬워야 한다. 아직 아무도 그런 규칙을 찾지 못했다. 당신은 찾을 수 있는가?

날짜는 숫자 0,…,90, \dots, 9 를 사용하여 일 월 연도 세 개의 수로 적는다. 다음 두 조건이 모두 성립하면 그 날짜는 좋은 날이다.

  1. 자릿수 균형. 날짜를 적었을 때 나타나는 모든 숫자(일, 월, 그리고 네 자리 연도)를 보자. 등장하는 각 숫자는 다른 모든 숫자와 같은 횟수만큼 나타나야 한다.

  2. 분할 가능. 날짜로부터 네 개의 수를 만든다.

    • 일,
    • 월,
    • 연도의 앞부분 — 첫 두 자리로 이루어진 수 (예: 19571957 이면 1919),
    • 연도의 뒷부분 — 마지막 두 자리로 이루어진 수 (예: 20002000 이면 00).

    이 네 수를 합이 같은 두 묶음으로 나눌 수 있으면 그 날짜는 분할 가능하다.

예를 들어 16 5 4928 은 좋은 날이다. 모든 숫자가 정확히 한 번씩 나타나고, 16+5+28=4916 + 5 + 28 = 49 이므로 {49}\{49\} 와 {16,5,28}\{16, 5, 28\} 이 합이 같은 두 묶음이 되기 때문이다.

입력

첫째 줄에 테스트 케이스의 수 TT 가 주어진다. 이어지는 TT 개의 줄에는 각각 한 날짜가 세 정수 DD, MM, YY 로 공백 하나로 구분되어 주어진다. 이들은 1≤D≤311 \le D \le 31, 1≤M≤121 \le M \le 12, 1000≤Y≤99991000 \le Y \le 9999 를 만족하는 유효한 날짜의 일, 월, 연도이다. 앞자리 00 은 붙이지 않는다. 예를 들어 6월은 0606 이 아니라 66 으로 적는다.

출력

각 테스트 케이스마다 날짜가 좋은 날이면 yes, 아니면 no 를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    4
    16 5 4928
    14 12 2747
    11 11 1111
    3 3 2014
    
    예상 출력
    yes
    no
    yes
    no
    
  2. 예제 2

    입력
    1
    9 4 1023
    
    예상 출력
    yes