๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฌ Biology/๋ฐ”์ด์˜ค ์ฝ”๋”ฉ ๋ฌธ์ œ

[ROSALIND] ๋‹จ๋ฐฑ์งˆ ์„œ์—ด์—์„œ mRNA ์„œ์—ด ์˜ˆ์ธกํ•ด๋ณด๊ธฐ

by HelloRabbit 2023. 5. 29.
728x90

๋ฌธ์ œ ์„ค๋ช…

์—ฐ๊ตฌ์ž๋“ค์ด ์ƒˆ๋กœ์šด ๋‹จ๋ฐฑ์งˆ์„ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ์ด ๋‹จ๋ฐฑ์งˆ์ด ์–ด๋–ค mRNA ์„œ์—ด์—์„œ๋ถ€ํ„ฐ ๋ฒˆ์—ญ๋œ ๊ฒƒ์ธ์ง€ ์•Œ์•„์•ผ ์œ ์ „์ฒด์—์„œ ์ด ๋‹จ๋ฐฑ์งˆ์„ ๋งŒ๋“œ๋Š” ๊ตฌ๊ฐ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋ฐฑ์งˆ ์„œ์—ด๋กœ mRNA ์„œ์—ด์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•œ ์ผ์ด๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ mRNA๊ฐ€ ํŠน์ •ํ•œ ๋‹จ๋ฐฑ์งˆ๋กœ ๋ฒˆ์—ญ๋˜๋Š” ๋ฐ˜๋ฉด์— ๋‹จ๋ฐฑ์งˆ์—์„œ mRNA ์„œ์—ด์„ ์•Œ์•„๋‚ด๋Š”๊ฑด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐ๋ณด๋‹ค ํž˜๋“  ์ผ์ด๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์— ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ์•„๋ฏธ๋…ธ์‚ฐ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ codon์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

RNA codon ํ…Œ์ด๋ธ”


๋ฌธ์ œ

์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ 1000๊ฐœ์˜ ์•„๋ฏธ๋…ธ์‚ฐ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ๋ฐฑ์งˆ ์„œ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ mRNA๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. ์ด ๋•Œ, ํŒŒ์ด์ฌ์—์„œ int๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์€ 2,147,483,647 (2^31−1)์ด๊ธฐ ๋•Œ๋ฌธ์— 1,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„  ๋Œ€์‹  ์ถœ๋ ฅํ•˜์‹œ์˜ค.

์˜ˆ์‹œ

MA

์˜ˆ์ƒ ๊ฒฐ๊ณผ

12

 

ํ•ด๊ฒฐ

codon = {}
# ๊ฐ ์•„๋ฏธ๋…ธ์‚ฐ์ด ๋  ์ˆ˜ ์žˆ๋Š” codon ๊ฐœ์ˆ˜ ์ €์žฅํ•˜๊ธฐ
with open("aa_codon.txt", "r") as f:
    for line in f.readlines():
        aa = line.split()
        for i in range(0, len(aa), 2):
            if aa[i+1] in codon:
                codon[aa[i+1]] += 1
            else:
                codon[aa[i+1]] = 1

# ๋‹จ๋ฐฑ์งˆ ์„œ์—ด์ด mRNA ์„œ์—ด์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ
def rev_translation(protein):
    ans = 3
    for aa in protein:
        ans *= codon[aa]
    
    return ans

# ์ž…๋ ฅ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
with open('rosalind_mrna.txt', 'r') as f:
    print(rev_translation(f.readline().strip()) % 1000000)

 

 

 

๋Œ“๊ธ€