트랙
/
Dart
Dart
/
연습 문제
/
뉴클레오타이드 개수
뉴클레오타이드 개수

뉴클레오타이드 개수

쉬움

지침

우리는 모두 생물학적 부모로부터 DNA라는 화학적 지침을 물려받아요. 이 지침은 우리 몸이 어떻게 만들어지는지에 영향을 줘요. 알려진 모든 생명체는 DNA에 의존해요!

참고: 이 연습 문제를 풀기 위해 뉴클레오타이드나 DNA에 대해 이해할 필요는 없어요.

DNA는 여러 화학 물질이 길게 이어진 사슬이고, 그중 가장 중요한 것은 아데닌, 시토신, 구아닌, 티민이라는 네 가지 뉴클레오타이드예요. DNA 사슬 하나에는 이 네 가지 뉴클레오타이드가 수십억 개나 들어갈 수 있고, 이들이 나타나는 순서가 중요해요! DNA 일부에서 이 뉴클레오타이드가 배열된 순서를 "DNA 서열"이라고 해요.

DNA 서열은 이 네 가지 뉴클레오타이드를 순서대로 모아 놓은 것으로 나타내는데, 흔히 문자를 이어 붙인 문자열로 표현해요. 예를 들어 여섯 개의 뉴클레오타이드로 이루어진 DNA 서열은 "ATTACG"처럼 써요.

'A'는 아데닌, 'C'는 시토신, 'G'는 구아닌, 'T'는 티민을 뜻해요.

DNA 서열을 나타내는 문자열이 주어지면, 각 뉴클레오타이드가 몇 개씩 있는지 세어요. 문자열에 A, C, G, T가 아닌 문자가 들어 있으면 잘못된 서열이므로 오류를 발생시켜야 해요.

예를 들어:

"GATTACA" -> 'A': 3, 'C': 1, 'G': 1, 'T': 2
"INVALID" -> error

구현

코드를 실행하다 보면 예상치 못한 문제를 처리해야 할 때가 있어요. Dart에서는 이런 상황을 처리할 때 예외를 사용할 수 있어요.

Dart에서 예외를 던지려면 throw 키워드 뒤에 발생시키려는 예외의 인스턴스를 붙여요. 예를 들어 throw Exception()은 기본 Exception 타입의 인스턴스를 던져요.

이 연습 문제에서는 InvalidNucleotideException이라는 사용자 정의 예외를 정의해야 해요. 이 예외는 잘못된 뉴클레오타이드를 만났을 때 던져야 해요. 테스트 스위트는 InvalidNucleotideException의 인스턴스가 전달되는지만 확인하므로, 올바르게 던지기만 하면 원하는 대로 자유롭게 구현할 수 있어요.

Dart의 예외에 대해 더 알고 싶다면 예외 문서를 참고해요. 사용자 정의 예외는 Exception 인터페이스를 구현해서 만들 수 있어요.

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

뉴클레오타이드 개수 문제를 시작해 볼 준비가 됐나요?

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