👉 문제 링크
문제 이해하는 데 시간이 참 많이 걸렸다.
구해야하는 Hamming Distance의 합이 가장 작은 DNA는 가장 많이 나온 문자이고, Hamming Distance는 가장 많이 나온 문자를 제외한 문자의 수다.
그래서 예제 1의 답은 TAAGATAC, 7인 것!
반복문의 범위 설정에 유의! 비교해야할 문자열은 세로줄이므로 m의 범위로 우선 설정해야 하는 것이다.
n,m = map(int, input().split())
arr = []
result,d = [],0 # d는 Hamming Distance
for _ in range(n):
arr.append(input())
for i in range(m):
a,t,g,c = 0,0,0,0 # 각 문자의 빈도수를 카운팅할 변수 설정
for j in range(n):
if arr[j][i] == 'A':
a+=1
if arr[j][i] == 'T':
t+=1
if arr[j][i] == 'G':
g+=1
if arr[j][i] == 'C':
c+=1
if max(a,t,g,c) == a:
result += 'A'
d += c+g+t
elif max(a,t,g,c) == c:
result += 'C'
d += a+t+g
elif max(a,t,g,c) == g:
result += 'G'
d += a+t+c
elif max(a,t,g,c) == t:
result += 'T'
d += a+g+c
print(''.join(result))
print(d)
또한,,,
a,t,g,c의 최댓값을 비교할 때에는 if-elif를 써야한다는 것!
if-if를 쓰는 실수를 조심하세요!