기록하고 까먹지 말기

1969 본문

전공/백준

1969

yha97 2023. 5. 22. 23:25

날짜 : 2023. 05. 22

사용 언어 : python

 

문제

https://www.acmicpc.net/problem/1969

 

 

코드

import sys

n, m = map(int, sys.stdin.readline().split())
dna = list()
res = ""
dist = 0
for _ in range(n):
    t = sys.stdin.readline().rstrip()  # dna 입력
    dna.append(t)

for i in range(m):
    check = dict()
    for s in dna:
        if s[i] not in check:
            check[s[i]] = 0
        check[s[i]] += 1
    v = max(check.values())  # 각 인덱스의 가장 많이 나온 숫자 확보
    t = list(check.keys())
    t.sort()
    for j in t:
        if check[j] == v:
            res += j  # dna 생성
            break
dist = 0
# 체크
for i in dna:
    check = -1
    temp = 0
    for j in range(m):
        if i[j] != res[j]:  # 서로 문자가 다른 경우
            dist += 1  # 추가

print(res)
print(dist)

 

 

풀이

- 각 인덱스에서 가장 많이 나온 스펠링을 구한 후 문자열을 생성한다.

- 그 문자열을 토대로 해당 인덱스마다 다른 것의 개수를 구한 후 출력

 

 

알게된 점

- 문제를 잘못봐서 삼천포로 빠졌다.

- "Hamming Distance란 길이가 같은 두 DNA가 있을 때, 각 위치의 뉴클오티드 문자가 다른 것의 개수이다." 라는 것을 단순 예시를 보고 value가 다른 인덱스 간의 차이로 착각하는 바람에 계속 문제 속에서 헤맸다.

 

 

참고 사이트

 

'전공 > 백준' 카테고리의 다른 글

1940  (0) 2023.05.28
4779  (0) 2023.05.25
2529  (0) 2023.05.21
1759  (0) 2023.05.20
1167  (0) 2023.05.18