-
[백준] 1969 - DNA알고리즘 2023. 5. 13. 14:22728x90
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)
'알고리즘' 카테고리의 다른 글
[백준] 1713 - 후보 추천하기 (0) 2023.05.13 [백준] 14716 - 현수막 (0) 2023.05.13 [백준] 1748 - 수 이어 쓰기1 (0) 2023.05.12 [백준] 13565 - 침투 (0) 2023.05.12 [백준] 1138 - 한 줄로 서기 (0) 2023.05.10