본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 1969번: DNA (Python)

문제

www.acmicpc.net/problem/1969

 

1969번: DNA

DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오

www.acmicpc.net

풀이

 - 브루트포스, 그리디 알고리즘

 

 - 맨 처음 문제 자체를 이해하기가 매우 어려웠다. 그래서 검색을 통해 문제 풀이를 찾아보니 다음과 같이 이해하면 되는 문제였다.

 

코드

n, m = map(int, input().split())

arr = []

# 문자열을 list형식으로 담아준다
for i in range(n):
    arr.append(list(map(str, input())))

cnt, hap = 0, 0
result = ''
for i in range(m):
    a, c, g, t = 0, 0, 0, 0
    for j in range(n):
        if arr[j][i] == 'T':
            t += 1
        elif arr[j][i] == 'A':
            a += 1
        elif arr[j][i] == 'G':
            g += 1
        elif arr[j][i] == 'C':
            c += 1
    if max(a,c,g,t) == a:
        result += 'A'
        hap += c + g +t
    elif max(a,c,g,t) == c:
        result += 'C'
        hap += a + g +t
    elif max(a,c,g,t) == g:
        result += 'G'
        hap += a + c +t
    elif max(a,c,g,t) == t:
        result += 'T'
        hap += c + g + a
    
print(result)
print(hap)