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

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

바이러스

시간 제한3초메모리 제한512 MB

요약
금지된 이진 단어들이 주어질 때, 이들을 연속된 부분 문자열로 포함하지 않는 무한 이진 수열이 존재하는지 판정한다.
난이도

보통10점 중 7점

유형
문자열 매칭, 트라이, 그래프, BFS
정답자
아직 제출이 없습니다

문제

이진 바이러스 조사 위원회는 0과 1로 이루어진 특정 문자열들이 바이러스 코드임을 알아냈다. 위원회는 모든 바이러스 코드의 집합을 확보했다. 0과 1로 이루어진 어떤 수열이 안전하다(safe)는 것은, 그 수열의 어떤 연속한 부분 수열(연속한 원소들로 이루어진 구간)도 바이러스 코드와 일치하지 않는다는 뜻이다. 위원회는 0과 1로 이루어진 무한하고 안전한 수열이 존재하는지 알고 싶어 한다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 바이러스 코드들을 읽는다.
  • 0과 1로 이루어진 무한하고 안전한 수열이 존재하는지 판별한다.
  • 결과를 표준 출력에 쓴다.

입력

첫째 줄에 바이러스 코드의 개수를 나타내는 정수 nn이 주어진다. 이어지는 nn개의 줄에는 각 줄마다 0과 1로 이루어진 비어 있지 않은 문자열, 즉 하나의 바이러스 코드가 주어진다. 모든 코드의 길이 합은 3000030000을 넘지 않는다.

출력

표준 출력의 첫째 줄이자 유일한 줄에 다음 단어 하나를 출력한다.

  • TAK - 0과 1로 이루어진 무한하고 안전한 수열이 존재하는 경우.
  • NIE - 그렇지 않은 경우.

힌트

코드 집합이 {011,11,00000}\{011, 11, 00000\}일 때, 안전한 무한 수열의 예로 010101…010101\ldots 가 있다. 코드 집합이 {01,11,00000}\{01, 11, 00000\}일 때에는 0과 1로 이루어진 안전한 무한 수열이 존재하지 않는다.

예제2

  1. 예제 1

    입력
    3
    01
    11
    00000
    
    예상 출력
    NIE
    
  2. 예제 2

    입력
    3
    011
    11
    00000
    
    예상 출력
    TAK