[C] 백준 1672번: DNA 해독

be_clever·2022년 2월 25일
0

Baekjoon Online Judge

목록 보기
92/172

문제 링크

1672번: DNA 해독

문제 요약

염기서열을 주어진 표를 이용해서 해독해야 한다. 염기서열의 마지막 두 문자를 각각 표의 행과 열로 삼아서 하나의 문자를 찾아서 대치시켜 최종적으로 하나의 문자로 만들어야 한다.

접근 방법

표에서 행과 열은 아데닌(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;
}
profile
똑똑해지고 싶어요

0개의 댓글