Hamming

Hamming

쉬움

지침

두 DNA 가닥 사이의 해밍 거리를 계산해요.

우리 몸은 DNA를 담고 있는 세포로 이루어져 있어요. 이 세포들은 주기적으로 닳아서 교체가 필요한데, 딸세포로 분열해서 스스로를 새로 만들어요. 실제로 평범한 사람의 몸은 평생에 걸쳐 약 10경 번의 세포 분열을 겪어요!

세포가 분열할 때 DNA도 함께 복제돼요. 이 과정에서 때때로 실수가 생겨서, DNA 조각 하나하나에 잘못된 정보가 인코딩되기도 해요. 두 DNA 가닥을 비교해서 서로 다른 부분의 개수를 세어 보면 실수가 얼마나 일어났는지 알 수 있어요. 이것을 바로 "해밍 거리"라고 해요.

DNA는 C, A, G, T라는 네 글자로 읽어요. 두 가닥은 이렇게 생겼을 수 있어요:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

두 가닥에는 차이가 일곱 개 있어서 해밍 거리는 7이에요.

해밍 거리는 생물학뿐만 아니라 과학의 여러 분야에서 유용하게 쓰여서, 알아 두면 좋은 용어예요 :)

구현 참고 사항

해밍 거리는 길이가 같은 서열에 대해서만 정의돼요. 그래서 길이가 다른 서열 사이에서 계산하려고 하면 제대로 동작하지 않아야 해요.

참고

Smalltalk에서는 예외가 Exception의 하위 클래스 인스턴스예요. 자신이 다루는 도메인에 맞는 예외를 직접 만들어도 되지만, 이 계층 구조를 살펴보면 풀이를 단순하게 만들어 줄 적절한 예외를 골라 쓸 수 있어요.

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

Hamming 문제를 시작해 볼 준비가 됐나요?

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