Pandas나 Numpy를 활용하면 분명 표를 바로 그릴 수 있는 방법이 있겠지만,

이 모듈들은 대부분의 코딩테스트에서는 사용할 수 없으므로 사용하지 않고 구현을 해보기로 했다.

덕분에 내가 아는 방법 내에서는 함수를 사용해서 위의 표를 일일이 경우의 수대로 if문으로 만들어서 리턴시키는 방법뿐이었다.

 

다음의 코드대로 했더니 문제를 맞힐 수 있었다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def dnaTable(col, row):
    if col == 'A' and row == 'A':
        return 'A'
    if col == 'A' and row == 'G':
        return 'C'
    if col == 'A' and row == 'C':
        return 'A'
    if col == 'A' and row == 'T':
        return 'G'
 
    if col == 'G' and row == 'A':
        return 'C'
    if col == 'G' and row == 'G':
        return 'G'
    if col == 'G' and row == 'C':
        return 'T'
    if col == 'G' and row == 'T':
        return 'A'
 
    if col == 'C' and row == 'A':
        return 'A'
    if col == 'C' and row == 'G':
        return 'T'
    if col == 'C' and row == 'C':
        return 'C'
    if col == 'C' and row == 'T':
        return 'G'
 
    if col == 'T' and row == 'A':
        return 'G'
    if col == 'T' and row == 'G':
        return 'A'
    if col == 'T' and row == 'C':
        return 'G'
    if col == 'T' and row == 'T':
        return 'T'
 
num = int(input())
dnaCode = list(map(str, input()))
= 0
while(i != num):
    i += 1
    decode = []
    decode.append(dnaTable(dnaCode[num-i], dnaCode[num-i-1]))
    # print(dnaCode)
    if len(dnaCode) != 1#dnaCode가 비어있지 않으면
        dnaCode.pop()
        dnaCode.pop()
        dnaCode.append(decode[0])
    else:
        break
print(dnaCode[0])
 
cs

 

이게 맞나 싶을 정도로 함수 부분의 코드가 길어진 부분에 대해서 끊임없이 의심하면서도 결국 노가다성의 코드를 만들었다.

밑의 코드에서는 while문을 활용해서 decode에 계속 해독된 코드 부분을 집어넣고

dnaCode에서 해독해야 할 부분의 2 문자를 빼서 해독된 부분을 새로 추가시켜주는 방법이다.

이때, dnaCode에 우리가 원하는 최종 문자 1개가 남았을 경우, while문에서 break 하고,

해당 문자를 출력해주기만 하면 된다.

 

사실 언뜻 보기만 해도 꽤나 지저분한 코드라고 스스로도 생각하고 있다.

뭔가 더 깔끔한 방법의 코드가 있다면.. 혹은 조언을 받을 수 있다면, 추후에 다시 이 해당 문제를 수정해볼 생각이다...

 

 

문제 출처: https://www.acmicpc.net/problem/1672

 

1672번: DNA 해독

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

www.acmicpc.net

+ Recent posts