알고리즘
[백준] 1969 - DNA
j9972
2023. 5. 13. 14:22
728x90
1. 문제
https://www.acmicpc.net/problem/1969
1969번: DNA
DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오
www.acmicpc.net
2. 접근
1. 문제의 의도는 m개의 후보군들과의 Hamming Distance의 값들의 합이 가장 적은 S 하나를 구해라! 이거다
2. 생각해 보니까 m개의 후보군들을 하나씩 인덱스 순서대로 최빈값을 구해서 하나씩 ans ( string ) 에 더해주면 될것같았다
3. 주의할점은 최빈값이 같은 경우인데, 그 경우에는 사전순으로 넣어주면 된다 하니 dict를 초기 세팅시 a -> c -> g -> t 순서로 세팅하면 된다
3. 풀이
#1969 실버4
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
dna = []
for i in range(n):
dna.append(input().rstrip())
ans = ''
cnt = 0
# 가로 -> 세로 순서로 체크
for i in range(m):
arr = {'A':0, 'C':0, 'G':0, 'T':0}
for j in range(n):
if dna[j][i] in arr.keys():
arr[dna[j][i]] += 1
max_key = max(arr, key=arr.get)
ans += max_key
cnt += (n-arr[max_key])
#print('max_key :', max_key, 'ans : ', ans, 'cnt :',cnt)
print(ans)
print(cnt)