RNA 전사

RNA 전사

보통

소개

치료 솔루션을 개발하는 생명공학 회사에서 일하고 있어요.

팀은 방금 희귀암을 위한 표적 치료제를 개발하는 새 프로젝트를 맡았어요.

Note

이야기가 아주 복잡하지만, 기본 아이디어는 이래요. 때로는 우리 몸에서 특정 단백질을 너무 많이 만들어요. 그러면 온갖 문제가 생길 수 있어요.

그런데 아주 특정한 분자(마이크로 RNA라고 불러요)를 만들 수 있다면, 그 단백질이 만들어지는 것을 막을 수 있어요.

이 기법을 RNA 간섭이라고 해요.

지침

주어진 DNA 서열의 RNA 상보 가닥을 알아내는 것이 이번 과제예요.

DNA와 RNA 가닥은 모두 뉴클레오타이드가 이어진 서열이에요.

DNA에 있는 네 가지 뉴클레오타이드는 아데닌(A), 사이토신(C), 구아닌(G), 티민(T)이에요.

RNA에 있는 네 가지 뉴클레오타이드는 아데닌(A), 사이토신(C), 구아닌(G), 우라실(U)이에요.

DNA 가닥이 주어지면, 각 뉴클레오타이드를 상보적인 뉴클레오타이드로 바꿔서 전사된 RNA 가닥을 만들어요.

  • G -> C
  • C -> G
  • T -> A
  • A -> U
Note

입력과 출력이 어떻게 구성되어 있는지 보고 싶다면, 테스트 스위트의 예제를 살펴봐요.

Rust 구현에 관한 참고 사항

Option이나 Result를 반환하는 공개 new 함수와 함께 구조체의 비공개 필드를 사용하면(여기서 DNA::new와 RNA::new가 그렇죠), DNA의 내부 표현이 올바르다는 것을 보장할 수 있어요. 유효한 DNA 문자열에는 항상 유효한 RNA 문자열이 대응하므로, into_rna에서 Result나 Option을 반환할 필요가 없어요.

테스트에서 보게 될 타입 시그니처는 바로 이 때문이에요.

DNA::new()와 RNA::new()의 반환 타입은 모두 Result<Self, usize>이고, 여기서 오류 타입 usize는 처음으로 잘못된 문자의 인덱스(문자 인덱스이며, utf8이 아니에요)를 나타내요.


출처

Hyperphysics링크가 새 창이나 탭에서 열려요
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Rust Exercism

RNA 전사 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Rust 트랙을 연습 문제 99개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.