본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 1672번 DNA 해독

by 현장 2021. 12. 20.

-코드

def sol(c1, c2):
    if c1 == 'A' and c2 == 'A':
        return 'A'
    if c1 == 'A' and c2 == 'G':
        return 'C'
    if c1 == 'A' and c2 == 'C':
        return 'A'
    if c1 == 'A' and c2 == 'T':
        return 'G'

    if c1 == 'G' and c2 == 'A':
        return 'C'
    if c1 == 'G' and c2 == 'G':
        return 'G'
    if c1 == 'G' and c2 == 'C':
        return 'T'
    if c1 == 'G' and c2 == 'T':
        return 'A'

    if c1 == 'C' and c2 == 'A':
        return 'A'
    if c1 == 'C' and c2 == 'G':
        return 'T'
    if c1 == 'C' and c2 == 'C':
        return 'C'
    if c1 == 'C' and c2 == 'T':
        return 'G'

    if c1 == 'T' and c2 == 'A':
        return 'G'
    if c1 == 'T' and c2 == 'G':
        return 'A'
    if c1 == 'T' and c2 == 'C':
        return 'G'
    if c1 == 'T' and c2 == 'T':
        return 'T'


l = int(input())
s = input()
while 1:
    l -= 1
    a1 = s[l]
    a2 = s[l - 1]
    if l == 0:
        break
    else:
        s = s[:-2]
        s += sol(a1, a2)

print(s)

처음 코드가 위 코드였으나 시간 초과가 나서 readline도 넣어보고 했지만 다시 오류가 나서 while문도 사용했지만 해결이 되지 않았습니다. 그래서 찾아보니

def sol(c1, c2):
    if c1 == 'A' and c2 == 'A':
        return 'A'
    if c1 == 'A' and c2 == 'G':
        return 'C'
    if c1 == 'A' and c2 == 'C':
        return 'A'
    if c1 == 'A' and c2 == 'T':
        return 'G'

    if c1 == 'G' and c2 == 'A':
        return 'C'
    if c1 == 'G' and c2 == 'G':
        return 'G'
    if c1 == 'G' and c2 == 'C':
        return 'T'
    if c1 == 'G' and c2 == 'T':
        return 'A'

    if c1 == 'C' and c2 == 'A':
        return 'A'
    if c1 == 'C' and c2 == 'G':
        return 'T'
    if c1 == 'C' and c2 == 'C':
        return 'C'
    if c1 == 'C' and c2 == 'T':
        return 'G'

    if c1 == 'T' and c2 == 'A':
        return 'G'
    if c1 == 'T' and c2 == 'G':
        return 'A'
    if c1 == 'T' and c2 == 'C':
        return 'G'
    if c1 == 'T' and c2 == 'T':
        return 'T'


l = int(input())
s = list(map(str, input()))
i = 0
while i != l:
    i += 1
    r = sol(s[l-i], s[l-i-1])
    if len(s) != 1:
        s.pop()
        s.pop()
        s.append(r)
    else:
        break
print(s[0])

여러번 바꿔보고 찾아보니 이렇게 코딩을 하니 해결이 됐습니다.