실행 시간 제한 | 메모리 제한 |
---|---|
1 초 | 128 MB |
DNA 연구를 하는 대학원생 민혁은 M (1 <= M <= 20)마리의 황소들과 F(1 <= F <= 20) 마리의 암소들의 유전자를 조사하고 있습니다. 그러나 그는 어떤 소들이 다른 소들의 가능한 후손인지 알 수 없습니다.
민혁은 모든 암소와 황소의 고유한 DNA 서열인 DNA_i를 알고 있습니다. DNA_i는 길이가 25인 문자열로 'A', 'C', 'G', 'T'의 대문자만 포함합니다. 그는 어떤 소가 어떤 황소와 암소의 쌍의 자식일 가능성이 있는지 알아내고자 합니다.
민혁을 도와주세요. 각 황소와 암소의 쌍에 대해, 민혁이 조사하고 있는 소들 중 얼마나 많은 소들이 그들의 자식이 될 수 있는지 출력하세요. 소는 다음의 조건을 만족하는 경우 주어진 황소와 암소의 자식이 될 수 있습니다.
따라서 예를 들어, 'abc'는 쌍 ('axx', 'xbc')에서 나올 수 있지만, 쌍 ('aaa', 'bbb')에서는 나올 수 없습니다.
다음 DNA 서열을 가진 세 마리의 황소(Bull)와 두 마리의 암소(Cow)를 생각해 봅시다:
Bull 1: GTTTTTTTTTTTTTTTTTTTTTTTT
Bull 2: AATTTTTTTTTTTTTTTTTTTTTTT
Bull 3: GATTTTTTTTTTTTTTTTTTTTTTT
Cow 1: TTTTTTTTTTTTTTTTTTTTTTTTT
Cow 2: ATTTTTTTTTTTTTTTTTTTTTTTT
황소 2와 암소 1은 암소 2의 부모가 될 수 있습니다:
Bull 2: AATTTTTTTTTTTTTTTTTTTTTTT
Cow 1: TTTTTTTTTTTTTTTTTTTTTTTTT
Cow 2: ATTTTTTTTTTTTTTTTTTTTTTTT
암소 2의 첫 번째 글자 'A'는 황소 2에서 왔을 수 있고, 암소 2의 두 번째 글자 'T'는 암소 1에서 왔을 수 있고, 나머지 글자들은 어느 부모에서든 올 수 있습니다.
당신의 목표는 각 황소와 암소의 쌍의 가능한 후손 수의 행렬을 만드는 것입니다.
2 3 TGAAAAAAAAAAAAAAAAAAAAAAA AGAAAAAAAAAAAAAAAAAAAAAAA ATAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAA TTAAAAAAAAAAAAAAAAAAAAAAA
2 1 0 0 0 2
황소 1과 암소 1을 생각해봅시다.:
b1: TGAAAAAAAAAAAAAAAAAAAAAAA
c1: ATAAAAAAAAAAAAAAAAAAAAAAA
그들의 DNA의 중요한 부분을 {T|A} 다음에 {G|T}로 표현할 수 있습니다
여기 황소 0과 암소 0에 대한 '매칭' 테스트가 있습니다:
b1: TGAAAAAAAAAAAAAAAAAAAAAAA -- 자기 자신은 부모가 될 수 없습니다
b2: AGAAAAAAAAAAAAAAAAAAAAAAA 자손입니다! [TA][GT]와 매칭됩니다
c1: ATAAAAAAAAAAAAAAAAAAAAAAA -- 자기 자신은 부모가 될 수 없습니다
c2: AAAAAAAAAAAAAAAAAAAAAAAAA -- 두 번째가 'A'입니다; G 나 T 가 와야합니다
c3: TTAAAAAAAAAAAAAAAAAAAAAAA 자손입니다! [TA][GT]와 매칭됩니다
따라서 결과 행렬의 첫 번째 요소는 2입니다. 다른 요소들은 유사하게 도출됩니다.