๐งฌ Biology/๋ฐ์ด์ค ์ฝ๋ฉ ๋ฌธ์
[ROSALIND] ๋จ๋ฐฑ์ง ์์ด์์ mRNA ์์ด ์์ธกํด๋ณด๊ธฐ
HelloRabbit
2023. 5. 29. 17:42
728x90
๋ฌธ์ ์ค๋ช
์ฐ๊ตฌ์๋ค์ด ์๋ก์ด ๋จ๋ฐฑ์ง์ ๋ฐ๊ฒฌํ์ ๋ ์ด ๋จ๋ฐฑ์ง์ด ์ด๋ค mRNA ์์ด์์๋ถํฐ ๋ฒ์ญ๋ ๊ฒ์ธ์ง ์์์ผ ์ ์ ์ฒด์์ ์ด ๋จ๋ฐฑ์ง์ ๋ง๋๋ ๊ตฌ๊ฐ์ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋จ๋ฐฑ์ง ์์ด๋ก mRNA ์์ด์ ์์ธกํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํ ์ผ์ด๋ค.
ํ์ง๋ง ํ๋์ mRNA๊ฐ ํน์ ํ ๋จ๋ฐฑ์ง๋ก ๋ฒ์ญ๋๋ ๋ฐ๋ฉด์ ๋จ๋ฐฑ์ง์์ mRNA ์์ด์ ์์๋ด๋๊ฑด ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฌด ๋ง๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณด๋ค ํ๋ ์ผ์ด๋ค. ์๋์ ๊ทธ๋ฆผ์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ํ๋์ ์๋ฏธ๋ ธ์ฐ์ ์ฌ๋ฌ ๊ฐ์ 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)