[백준-1969] DNA

이말감·2022년 3월 14일
0

백준

목록 보기
12/49

문제

링크

코드

n, m = map(int, input().split())
dna = []
for _ in range(n) :
    dna.append(input())

name = []

for i in range(m) :
    new = {'A' : 0, 'C' : 0, 'G' : 0, 'T' : 0}
    for j in range(n) :
        new[dna[j][i]] += 1
    name.append((max(new, key=new.get)))
dnaName = ''.join(name)

count = 0
for d in dna :
    for i in range(m) :
        if d[i] != dnaName[i] :
            count += 1
print(dnaName)
print(count)

풀이

앞에서 풀 때도 문제를 헷갈렸는데 이번에도 이해못하고 풀었더니 시간만 날렸다...
이 문제는 입력한 DNA에서 구하는 게 아니라, 입력값을 바탕으로 새로운 DNA 이름을 만드는 문제다 !
DNA 이름이 A, T, G, C으로 이루어져 있으므로 딕셔너리를 이용해서 입력된 DNA 값을 통해 새로운 DNA 이름을 만들었다.
그리고 새로운 이름과 입력된 DNA 이름을 비교하면서 Hamming Distance를 구하면 된다.

  1. 딕셔너리를 이용해서 새로운 DNA 이름 구하기
    1-1. 입력된 이름을 첫글자부터 마지막 글자까지 가장 많이 쓰인 글자를 찾기
  2. 새로운 DNA 이름과 입력된 DNA 이름을 비교해서 Hamming Distance를 구한다.
profile
전 척척학사지만 말하는 감자에요

0개의 댓글