티스토리 뷰

 

1969번: DNA

DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오

www.acmicpc.net


1. 문제 내용

 

 

2. 접근 방식

  • 각 DNA 자릿수마다 가장 많이 사용된 뉴클레오티드를 조합하면, Hamming Distance가 가장 작다.

각 DNA에 자릿수마다 가장 많이 사용된 뉴클레오티드를 찾기 위해선 가장 먼저 위 그림과 같이 ACGT의 분포도를 확인해야 한다. 이중 최대값을 확인한 후, 최대값을 가진 뉴클레오티드를 제외한 나머지 뉴클레오티드의 개수를 COUNT하면 Hamming Distance를 구할 수 있다.

 

 

3. 정답 코드

n, m = map(int, input().split())
data = [input() for _ in range(n)]

result = ''
count = 0
for i in range(m):
    dna = ['A', 'C', 'G', 'T']
    cnt = [0, 0, 0, 0]
    for d in data:
        cnt[dna.index(d[i])] += 1

    index = cnt.index(max(cnt))
    result += dna[index]
    count += sum(cnt) - max(cnt)

print(result)
print(count)
728x90