만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

루미큐브

면접 대비

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

요약
받은 타일 패에서 같은 숫자의 다른 무늬 세 장 이상이나 같은 무늬의 연속된 숫자 세 장 이상으로 족보를 만들 수 있는지 판단합니다.
난이도

쉬움10점 중 3점

유형
구현, 정렬, 해시맵
정답자
아직 제출이 없습니다

문제

루미큐브는 규칙이 단순한 게임이라 나이 지긋한 어르신이 손주와 자주 즐긴다. 타일은 파랑(b), 초록(g), 빨강(r), 노랑(y) 네 가지 색으로 나뉜다. 색마다 11번부터 NN번까지 번호를 붙인 서로 다른 타일이 있고(N>0N > 0), 타일의 번호가 그 타일의 값이다. (값, 색) 조합마다 타일이 두 장씩 있다.

게임을 시작할 때 심판이 참가자마다 손패를 나눠 주고, 나눠 준 손패는 그 참가자만 본다. 아무에게도 가지 않은 타일은 뒷면을 위로 해서 탁자에 쌓아 더미를 만든다. 참가자는 차례를 돌아가며 타일을 낸다. 낼 수 있는 타일은 그룹이나 런에 속하는 타일뿐이다. 그룹은 값이 같고 색이 서로 다른 타일 세 장 이상을 모은 것이다. 런은 색이 같고 값이 연속하는 타일 세 장 이상을 모은 것이다. 낼 수 있는 타일이 하나도 없는 참가자는 더미에서 타일을 한 장 가져와야 한다.

어르신들은 한 차례에 타일을 많이 내고 싶어 하고, 진행이 멈추기 때문에 더미에서 타일을 가져오는 것을 싫어한다. 그런데도 손패에 있는 런이나 그룹을 못 보고 넘겨서 괜히 타일을 가져오는 일이 있다. 손패가 주어질 때 런이나 그룹을 새로 만들 수 있는지 판정하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다.

  • 첫째 줄에 참가자가 손에 든 타일의 개수 MM이 주어진다. (1≤M≤8001 \le M \le 800)
  • 둘째 줄에 손에 든 타일 MM개가 공백으로 구분되어 주어진다. 각 타일은 값 VV(1≤V≤1001 \le V \le 100) 뒤에 색을 나타내는 문자 b, g, r, y 중 하나를 붙인 문자열이다.

출력

각 테스트 케이스마다 런이나 그룹을 만들 수 있으면 YES를, 만들 수 없으면 NO를 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    2
    3
    1r 2r 3r
    4
    1r 1y 2g 3g
    
    예상 출력
    YES
    NO
    
  2. 예제 2

    입력
    3
    3
    5b 5g 5r
    3
    5b 5g 5b
    4
    7y 7r 7g 7b
    
    예상 출력
    YES
    NO
    YES
    
  3. 예제 3

    입력
    3
    3
    1r 1r 2r
    4
    4b 4b 4g 4g
    4
    9y 9y 9b 9g
    
    예상 출력
    NO
    NO
    YES
    
  4. 예제 4

    입력
    2
    1
    1b
    1
    100y
    
    예상 출력
    NO
    NO
    
  5. 예제 5

    입력
    3
    3
    98r 99r 100r
    3
    100b 100g 100y
    2
    99g 100g
    
    예상 출력
    YES
    YES
    NO