[백준] DNA (파이썬) (feat. Counter, most_common)

Woonil·2025년 3월 28일
0

알고리즘

목록 보기
36/38

처음에 이 문제가 실버4라고..? 문제가 생각보다 까다롭다. Counter를 사용해야 겠다고 가장 먼저 떠올렸다야 겠다고 가장 먼저 떠올렸다. 파이썬의 collections 모듈의 Counter를 사용하면 쉽게 풀이가 가능하다. 이 모듈은 딕셔너리의 메서드를 제공하며, most_common() 함수는 개수(키의 개수)가 많은 순서대로 배열로 반환해준다. 자세한 사용방법은 다음 블로그를 참고하자. DALE 님의 블로그인데, 여러 프로그래밍 분야의 유용한 글들이 많다.

DALE님의 블로그- 파이썬의 Counter

from collections import Counter
import sys
input=sys.stdin.readline

n,m=map(int,input().rstrip().split())
arr=[list(input().rstrip()) for _ in range(n)]
ans=''
hd=0

for j in range(m):
    tmp=[]
    for i in range(n):
        tmp.append(arr[i][j])
    l=len(tmp)
    # 개수가 큰 순서대로 배열로 반환
    # 예시 1) [('A', 5), ('T', 1)]
    # 예시 2) [('A', 1), ('C', 1), ('G', 1), ('T', 1)]
    c=Counter(tmp).most_common()
    # 정렬기준: 개수순, 뉴클레오티드 사전순
    c.sort(key=lambda x:(-x[1],x[0]))
    hd+=l-c[0][1]
    ans+=c[0][0]

print(ans)
print(hd)
profile
프론트 개발과 클라우드 환경에 관심이 많습니다:)

0개의 댓글

관련 채용 정보