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

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

슬러피(Slurpy) 판별

면접 대비

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

요약
길이 60 이하의 문자열 최대 10개가 주어질 때, 각 문자열이 Slimp 뒤에 Slump가 오는 Slurpy인지 판정한다.
난이도

보통10점 중 5점

유형
재귀, 문자열, 구현, 백트래킹
정답자
아직 제출이 없습니다

문제

제약 조건의 집합에 따라 문자열을 인식하는 것은 흔한 계산 문제입니다. Slurpy는 특정 성질을 만족하는 문자열입니다. 프로그램은 여러 문자열을 입력받아, 각 문자열이 Slurpy인지 아닌지를 출력합니다.

Slump은 다음 성질을 갖는 문자열입니다.

  1. 첫 문자가 D 또는 E입니다.
  2. 첫 문자 뒤에 하나 이상의 F가 이어집니다.
  3. 이 F들의 뒤에는 또 다른 Slump 또는 G가 오며, 이것이 Slump을 끝맺습니다. 예를 들어 DFFEFFFG는 Slump입니다. D로 시작하고 F 두 개가 이어진 뒤, Slump EFFFG로 끝나기 때문입니다.
  4. 그 밖의 문자열은 Slump이 아닙니다.

Slimp은 다음 성질을 갖는 문자열입니다.

  1. 첫 문자가 A입니다.
  2. 길이가 2인 Slimp라면, 두 번째이자 마지막 문자가 H입니다.
  3. 길이가 2가 아니라면, 다음 두 형태 중 하나입니다.
    • A 다음에 B, 그다음에 Slimp, 그다음에 C.
    • A 다음에 Slump(위 정의 참고), 그다음에 C.
  4. 그 밖의 문자열은 Slimp이 아닙니다.

Slurpy는 Slimp 뒤에 Slump이 이어진 문자열입니다.

예시

  • Slump: DFG, EFG, DFFFFFG, DFDFDFDFG, DFEFFFFFG
  • Slump이 아님: DFEFF, EFAHG, DEFG, DG, EFFFFDG
  • Slimp: AH, ABAHC, ABABAHCC, ADFGC, ADFFFFGC, ABAEFGCC, ADFDFGC
  • Slimp이 아님: ABC, ABAH, DFGC, ABABAHC, SLIMP, ADGC
  • Slurpy: AHDFG, ADFGCDFFFFFG, ABAEFGCCDFEFFFFFG
  • Slurpy가 아님: AHDFGA, DFGAH, ABABCC

입력

첫째 줄에 문자열의 개수 NN (1≤N≤101 \le N \le 10)이 주어집니다. 다음 NN개의 줄에는 각각 1자 이상 60자 이하의 알파벳 문자열이 주어집니다.

출력

각 입력 문자열에 대해, 그 문자열이 Slurpy이면 YES, 아니면 NO를 한 줄에 하나씩 출력합니다.

예제2

  1. 예제 1

    입력
    2
    AHDFG
    DFGAH
    
    예상 출력
    YES
    NO
    
  2. 예제 2

    입력
    6
    AHDFG
    ADFGCDFFFFFG
    ABAEFGCCDFEFFFFFG
    AHDFGA
    DFGAH
    ABABCC
    
    예상 출력
    YES
    YES
    YES
    NO
    NO
    NO