https://www.acmicpc.net/problem/1672
1672번: DNA 해독
N개의 A, G, C, T로 구성되어 있는 DNA 염기서열이 있다. 그리고 우리는 이 염기서열을 아래의 표를 이용하여 해독을 해야 한다. 해독 방법은 염기 서열에서 제일 끝에 있는 두 개의 염기를 An-1, An이
www.acmicpc.net
문제
N개의 A, G, C, T로 구성되어 있는 DNA 염기서열이 있다. 그리고 우리는 이 염기서열을 아래의 표를 이용하여 해독을 해야 한다.

해독 방법은 염기 서열에서 제일 끝에 있는 두 개의 염기를 An-1, An이라 할 때, An-1을 행으로 An을 열로 대응시켜 그에 해당하는 하나의 염기로 바꾸는 방식을 반복하는 것이다. 예를 들어 AAGTCG라는 염기서열이 있다고 하자. 이 서열을 위의 규칙 때로 해독하면 AAGTCG → AAGTT → AAGT → AAA → AA → A 가 되어 최종적으로 해독한 염기는 A가 된다.
문제는 어떤 염기서열이 주어졌을 때 위의 표를 참고하여 해독된 최종 염기를 출력하는 것이다.
입력
첫째 줄에 염기 서열의 길이 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 염기서열을 나타내는 길이가 N인 문자열이 주어진다.
출력
첫째 줄에 최종 염기를 출력한다.
내 풀이
# 39912kb 636ms
n = int(input())
dna = list(input())
i = len(dna)-1
while i != 0:
if dna[i-1] =='A':
if dna[i] == 'A'or dna[i] == 'C':
pass
elif dna[i] == 'G':
dna[i-1] = 'C'
else:
dna[i-1] = 'G'
elif dna[i-1] == 'G':
if dna[i] == 'A':
dna[i-1] = 'C'
elif dna[i] == 'G':
pass
elif dna[i] == 'C':
dna[i-1] = 'T'
else:
dna[i-1] = 'A'
elif dna[i-1] == 'C':
if dna[i] == 'A':
dna[i-1] = 'A'
elif dna[i] == 'G':
dna[i-1] = 'T'
elif dna[i] == 'C':
pass
elif dna[i] == 'T':
dna[i-1] = 'G'
elif dna[i-1] == 'T':
if dna[i] == 'A' or dna[i] == 'C':
dna[i-1] = 'G'
elif dna[i] == 'G':
dna[i-1] = 'A'
else:
pass
dna.pop(i)
i -= 1
print(*dna)
메모
그야말로 하드코딩..
리스트로 해결하는 방법도 있다.
'파이썬 알고리즘 연습' 카테고리의 다른 글
[Python | 백준 1816번] 암호 키 (0) | 2024.02.14 |
---|---|
[Python | 백준 1193번] 분수찾기 (0) | 2024.02.13 |
[Python | 백준 1181번] 단어 정렬 (1) | 2024.01.30 |
[Python | 백준 1551번] 수열의 변화 (0) | 2024.01.30 |
[Python | 백준 1546번] 평균 (1) | 2024.01.30 |