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

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

세포 분열

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

요약
N개 세포 유형 각각의 돌연변이 규칙과 초기 세포가 주어질 때, 관찰된 최종 문자열이 분열 과정으로 만들어질 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 구간, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

대학원생 시철이는 대학원에서도 복전을 한다. 이번엔 무려 생명공학이다!

과제에 짓눌리는 걸 좋아하는 시철이답게, 오늘도 어김없이 세포 배양 과제를 하고 있다.

시철이가 배양하는 세포는 상당히 특이한 성질이 있다.

  1. 모든 세포는 분열할 때 좌우로 갈라진다. 세포 분열이 끝나고 나면, 같은 종류의 세포가 하나 더 만들어진다.
  2. 때때로 세포 분열 중 돌연변이가 발생해, 다른 종류의 세포가 하나 만들어질 수 있다. 돌연변이가 일어나면, 이전과 같은 세포 11개와 이전과 다른 세포 11개가 만들어지고 이 둘의 순서는 무작위로 정해진다.
  3. 세포 종류에 따라서 돌연변이가 아예 발생하지 않을 수도 있다. 만약 발생한다면, 오직 다른 한 종류로만 가능하다.
  4. 분열하는 세포는 무작위로 정해지고, 동시에 여러 세포가 분열할 수 있다.

불타는 금요일, 시철이는 배양지에 세포 하나를 올려두었다. 다음 주 월요일에 시철이가 연구실로 돌아왔을 땐 모든 세포 분열이 멈춰있는 상태였다. 곧바로 시철이는 이 배양지에 있는 세포들을 관찰했지만, 돌연변이가 너무 많이 생기는 바람에 이 배양지가 본인의 배양지인지 동기의 배양지인지 헷갈리기 시작했다.

과연 배양지에 있는 세포들은 시철이가 올려둔 초기 세포에서 분열이 된 것일까?

입력

첫 번째 줄에 세포 종류의 개수 NN가 주어진다. (1≤N≤261 \leq N \leq 26)

두 번째 줄에 돌연변이를 나타내는 알파벳 소문자 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N가 공백 단위로 주어진다. 이것은 ii번째 알파벳에 해당하는 세포의 분열 중 돌연변이가 발생해 aia_i번째 알파벳에 해당하는 세포가 생길 수 있음을 뜻한다. aia_i가 ii번째 알파벳일 경우, 해당 종류의 세포는 돌연변이가 발생하지 않는 것을 의미한다. aia_i는 aa부터 NN번째 알파벳 중 하나다.

세 번째 줄에 초기 세포의 종류를 나타내는 알파벳 소문자 KK가 주어진다. KK는 aa부터 NN번째 알파벳 중 하나다.

네 번째 줄에 시철이가 관찰한 세포 배열을 나타내는 SS가 주어진다. SS의 모든 원소는 aa부터 NN번째 알파벳 소문자 중 하나고, 공백 없이 한 줄에 주어진다. (1≤∣S∣≤5001 \leq |S| \leq 500)

출력

관찰한 세포 배열이 초기 세포로부터 생겨날 수 있다면 YES를 출력한다.

그렇지 않으면 NO를 출력한다.

예제2

  1. 예제 1

    입력
    5
    b c c a b
    e
    ecbbc
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    3
    a b c
    a
    c
    
    예상 출력
    NO