일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 구현
- 그래프 탐색
- 그래프이론
- 백준
- 브루트포스 알고리즘
- web
- lv2
- JavaScript
- 웹 프론트엔드
- BFS
- 정렬
- 너비 우선 탐색
- 딕셔너리
- 스택
- programmers
- 파이썬
- level2
- 프로그래머스
- DP
- 문자열
- CSS
- DFS
- BASIC
- 프로그래머스스쿨
- 그리디 알고리즘
- 자바스크립트
- 다이나믹 프로그래밍
- 자료구조
- 알고리즘
- 그래프 이론
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 |