첫 줄에 DNA의 수 N과 문자열의 길이 M이 주어진다. 그리고 둘째 줄부터 N+1번째 줄까지 N개의 DNA가 주어진다. N은 1,000보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다.
첫째 줄에 Hamming Distance의 합이 가장 작은 DNA 를 출력하고, 둘째 줄에는 그 Hamming Distance의 합을 출력하시오. 그러한 DNA가 여러 개 있을 때에는 사전순으로 가장 앞서는 것을 출력한다.
- 문자열 각 자리수를 검사해서 가장 많이 나온 알파벳을 result에 넣어준다.
- A, C, G, T 만 입력받으므로 a리스트는 4까지만 만들어도 된다.
- 근데 그렇게하면 코드가 길어질거같아서 그냥 26까지 만들었다.
import sys
sys.stdin = open("input.txt", "rt")
input = sys.stdin.readline
n, m = map(int, input().split())
s = []
result = ""
cnt = 0
for i in range(n):
a = input()
s.append(a.upper()) # 문자열에 string 넣기 >> 이차원 배열처럼 j열 i행 조회 가능
print(s)
for i in range(m):
a = [0 for i in range(26)] # 알파벳 크기 배열
print(a)
for j in range(n):
a[ord(s[j][i]) - 65] += 1 # 해당 알파벳 index에 1을 더하라
result += chr(a.index(max(a)) + 65) # 알파벳 index에 아스키코드를 통해 문자로 변환
for i in range(n):
for j in range(m):
if s[i][j] != result[j]:
cnt += 1
print(result)
print(cnt)