염기서열을 주어진 표를 이용해서 해독해야 한다. 염기서열의 마지막 두 문자를 각각 표의 행과 열로 삼아서 하나의 문자를 찾아서 대치시켜 최종적으로 하나의 문자로 만들어야 한다.
표에서 행과 열은 아데닌(A), 구아닌(G), 사이토신(C), 티민(T) 순서대로 자리잡고 있습니다. 따라서 각 뉴클레오타이드를 0 ~ 3의 인덱스로 변환시켜주는 함수가 필요합니다.
문자열로 입력을 받고, 문자열의 맨 뒤 2개의 문자를 이용해 표에서 해당하는 문자를 찾고, 해당 문자로 대치시켜주는 작업을 반복해주면 됩니다. 최종적으로 하나의 문자가 되면 그것을 출력해주면 정답이 됩니다.
#include <stdio.h>
int n;
char str[1000005], tmp;
char table[4][4] = {
{'A', 'C', 'A', 'G'},
{'C', 'G', 'T', 'A'},
{'A', 'T', 'C', 'G'},
{'G', 'A', 'G', 'T'} };
int index(char c)
{
switch (c)
{
case 'A':
return 0;
case 'G':
return 1;
case 'C':
return 2;
case 'T':
return 3;
}
}
int main(void)
{
scanf("%d", &n);
scanf("%s", str);
while (n != 1)
{
str[n - 2] = table[index(str[n - 2])][index(str[n - 1])];
n--;
}
printf("%c", str[0]);
return 0;
}