본문 바로가기

Python6

[ROSALIND] DNA 변이 개수 세기 문제 (풀어보기) Hamming distance란 같은 길이를 가진 2개의 문자열 간의 다른 문자 개수를 얘기합니다. DNA 염기서열 2개가 주어졌을 때, Hamming distance를 구하시오. 예시 GAGCCTACTAACGGGAT CATCGTAATGACGGCCT 예상 결과 7 해결 seq1, seq2 = '', '' with open("rosalind_hamm.txt", "r") as file: seq1 = file.readline().strip() seq2 = file.readline().strip() print(sum(seq1[i] != seq2[i] for i in range(len(seq1)))) 2023. 5. 9.
[ROSALIND] GC 비율 문제 (풀어보기) GC 비율이란 DNA 염기서열 전체 중 'G'와 'C'가 차지하는 비율이다. 최대 10개의 DNA 서열이 주어졌을 때, 가장 높은 GC 비율을 가진 서열의 이름과 GC 비율(%)을 구하시오. 예시 >Rosalind_6404 CCTGCGGAAGATCGGCACTAGAATAGCCAGAACCGTTTCTCTGAGGCTTCCGGCCTTCCC TCCCACTAATAATTCTGAGG >Rosalind_5959 CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT ATATCCATTTGTCAGCAGACACGC >Rosalind_0808 CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC TGGG.. 2023. 5. 8.
[ROSALIND] 피보나치 숫자 문제 피보나치 숫자 0,1,1,2,3,5,8,13,21,34,… 의 패턴은 매우 간단하다. 그 다음 올 숫자는 그 전 두 숫자를 더한 값이다. n번째로 오는 숫자를 반환하시오. 예시 6 예상 결과 8 해결 def fibonacci(n): a,b = 0,1 for i in range(2, n+1): a,b = b,a+b print(b) 첫번째와 두번째 숫자가 각각 0과 1이라는 것을 알기 때문에 for문으로 간단하게 더해가면 된다. 2023. 5. 7.
[ROSALIND] DNA 상보적 염기서열 문제 (풀어보기) DNA 서열의 한쪽 염기서열이 주어졌을 때, 상보적으로 쌍을 이루는 염기서열을 반환하시오. 예시 AAAACCCGGT 예상 결과 ACCGGGTTTT *** DNA나 RNA 염기서열을 쓸 때엔 항상 5'에서 3' 방향으로 쓰기 때문에 반대편 서열이 3' - TTTTGGGCCA - 5' 인것을 거꾸로 5' - ACCGGGTTTT - 3' 방향 전환을 해야 정답이 된다. 해결 def rev_complement(dna): print(dna[::-1].upper().replace('A', 't').replace('T', 'a').replace('G', 'c').replace('C', 'g').upper()) 2023. 5. 6.
[ROSALIND] DNA에서 RNA 서열 만들기 문제 (풀어보기) RNA 서열은 A, C, G, U nucleotide를 가지고 있다. DNA 서열 중 coding strand의 서열이 주어졌을때 RNA 서열을 반환하시오. 예시 GATGGAACTTGACTACGTAAATT 예상 결과 GAUGGAACUUGACUACGUAAAUU 해결 def dna_to_rna(dna): print(dna.upper().replace('T', 'U')) DNA와 RNA 염기서열의 차이는 DNA는 Thymine(T)을 가지고 있는 반면에 RNA는 Uracil(U)을 가지고 있다는 것이다. 그리고 문제에서 보면 coding strand 서열이 주어졌다고 하는데 coding strand는 RNA와 같은 서열을 가지고 있다. 그래서 DNA coding strand에서 RNA 서열이.. 2023. 5. 5.
[ROSALIND] DNA nucleotide 세기 문제 (풀어보기) DNA 서열은 A, C, G, T 4가지 nucleotide로 이루어져 있다. DNA 서열이 주어졌을 때 각 nucleotide의 개수를 A, C, G, T 순서로 반환하시오. 예시 AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC 예상 결과 20 12 17 21 해결 def actg_count(dna): dna = dna.lower() print(dna.count('a'), dna.count('c'), dna.count('g'), dna.count('t')) 파이썬에는 간편하게도 이미 string의 특정 문자의 개수를 셀수 있는 기능이 탑재되어 있다. 2023. 5. 4.