반응형
코드
n,m = map(int,input().split())
dna_list = []
hd = 0
ans = []
for i in range(n):
dna = list(input())
dna_list.append(dna)
for i in range(m):
cnt = {'A':0,'C':0,'G':0,'T':0}
sum = 0
for j in range(n):
cnt[dna_list[j][i]] += 1
for k in cnt.values():
sum += k
sum -= max(cnt.values())
hd += sum
ans.append(max(cnt,key=cnt.get))
for i in ans:
print(i,end='')
print()
print(hd)
설명
각 DNA의 앞글자부터 차례대로 A, C, G, T 가 나온 수를 구해서 가장 많이 나온 문자를 골라야 hamming distance가 최소가 된다.
딕셔너리에 각 문자의 등장 횟수를 저장해두고 max(cnt, key=cnt.get)을 이용해서 가장 많이 등장한 문자를 ans 리스트에 넣었다. 이때 hamming distance도 구해야 하므로 딕셔너리에 있는 모든 value 값을 더해준 뒤 가장 큰 value 값은 빼주었다.
반응형
'알고리즘 > 완전탐색' 카테고리의 다른 글
[백준][Python] 18511번 큰 수 구성하기 (0) | 2022.07.07 |
---|---|
[백준][Python] 2422번 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2022.07.06 |
[백준][Python] 18312번 시각 (0) | 2022.07.05 |
[백준][Python] 19532번 수학은 비대면강의입니다 (0) | 2022.07.05 |
[백준][Python] 2231번 분해합 (0) | 2022.07.04 |
댓글