Hamming

Hamming

쉬움

소개

우리 몸은 DNA를 담고 있는 세포로 이루어져 있어요. 이 세포들은 주기적으로 닳아서 교체가 필요한데, 딸세포로 분열하면서 스스로를 교체해요. 실제로 평균적인 사람의 몸은 평생 동안 약 10,000조 번의 세포 분열을 겪어요!

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

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

지침

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

DNA는 C, A, G, T 네 글자로 읽어요. 두 가닥은 다음과 같이 생겼을 수 있어요:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

두 가닥에는 7개의 차이가 있어요. 따라서 해밍 거리는 7이에요.

구현 참고 사항

해밍 거리는 길이가 같은 서열에 대해서만 정의돼요. 따라서 길이가 다른 서열 사이에서는 계산할 수 없어요.

예외 메시지

때로는 예외를 발생시켜야 하는 경우가 있어요. 이럴 때는 오류의 원인이 무엇인지 알려 주는 의미 있는 오류 메시지를 항상 함께 넣어야 해요. 그래야 코드를 읽기 쉬워지고 디버깅에도 큰 도움이 돼요. 오류의 원인이 어떤 유형인지 알고 있는 상황이라면 내장 오류 유형 중 하나를 발생시켜도 되지만, 그때도 의미 있는 메시지는 꼭 넣어야 해요.

이 연습 문제에서는 검사하는 가닥의 길이가 서로 다를 때 raise 문을 사용해 ValueError를 "던져야" 해요. 테스트는 exception을 raise하면서 메시지도 함께 넣어야만 통과해요.

메시지와 함께 ValueError를 발생시키려면, 메시지를 exception 타입의 인자로 써요:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Python Exercism

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

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