본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1969 DNA

by Alan_Kim 2023. 3. 15.
728x90
반응형

https://www.acmicpc.net/problem/1969

 

1969번: DNA

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

www.acmicpc.net

 

문제해결

  • 각 자리의 알파벳을 보고 가장 많은 알파벳이 Hamming Distance이 가장 작은 DNA가 된다는 것은 쉽게 알 수 있다.
  • 따라서 각 자리별로 가장 많은 알파벳과 그 알파벳이 아닌 것들의 개수 합을 구하면 된다.

 

CODE

n, m = map(int, input().split())
graph = [list(str(input().rstrip())) for _ in range(n)]
ans_1=''
ans_2=0
for j in range(m):
    memo = {'T':0, "A":0, "G":0, "C":0}
    for i in range(n):
        memo[graph[i][j]] += 1
    target = 0
    m = ''
    for i in ['A','C','G','T']:
        if memo[i] > target:
            target = memo[i]
            m = i 
    ans_2 += n-target
    ans_1 = ans_1 + m
print(ans_1)
print(ans_2)
728x90
반응형

댓글