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