| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - BFS
- 파이썬
- 브루트포스 알고리즘
- web
- 백준
- 다이나믹 프로그래밍
- DP
- 자료구조
- 프로그래머스스쿨
- 그래프 이론
- 스택
- 자바스크립트
- programmers
- level2
- 문자열
- 정렬
- 그리디 알고리즘
- 너비 우선 탐색
- CSS
- 그래프 탐색
- 구현
- 딕셔너리
- 웹 프론트엔드
- 프로그래머스
- lv2
- BASIC
- DFS
- 알고리즘
- JavaScript
- 그래프이론
                            Archives
                            
                        
                          
                          - Today
- Total
DevLog:-)
[알고리즘][파이썬]1969-DNA 본문
반응형
    
    
    
  
문제

코드
import sys
N,M = map(int,sys.stdin.readline().strip().split())
arr = []
for i in range(N):
    arr.append(list(map(str,sys.stdin.readline().strip())))
    
answer=''
sum =0
for i in range(M):
    map ={"A":0, "C":0,"G":0 ,"T":0}
    for j in range(N):
        map[arr[j][i]] +=1
    m = max(map,key=map.get)
    answer+=m
    sum += (N- map[m])
    map.clear
print(answer)
print(sum)
#answer=[](append)와 answer=""(+=)의 차이
코멘트
문제를 한 번에 이해하기 어려려웠지만 구현은 비교적 간단한 문제인 거 같다.
결과적으로 주어진 문자열과 가장 닮은 문자열을 구해 출력하면 되는 문제이다.
예를 들어 다음과 같이 입력이 주어질 때
4 4
TAGA
TGGA
GCAC
TCGG
DNA->TCGA 각 인덱스에서 가장 많이 나온 문자를 합친 문자열!
Hamming Distance->1212 각 인덱스에서 가장 많이 나온 문자를 제외한 문자의 수!
TAGC각각의 변수를 선언해도 되지만 더 간단한 구현을 위해 딕셔너리를 이욯하여 코드를 작성했다.
반응형
    
    
    
  '알고리즘 > 백준' 카테고리의 다른 글
| [알고리즘][파이썬]1371-가장 많은 글자 (0) | 2023.07.01 | 
|---|---|
| [알고리즘][파이썬]14503-로봇청소 (0) | 2023.06.29 | 
| [알고리즘][파이썬]1120-문자열 (0) | 2023.06.14 | 
| [알고리즘][파이썬]1251-단어 나누기 (0) | 2023.06.14 | 
| [알고리즘][파이썬]5585-거스름 (0) | 2023.06.07 | 
 
                   
                   
                  