BA1A - Compute the Number of Times a Pattern Appears in a Text
* 문제 링크 : https://rosalind.info/problems/ba1a/
첫 문제라서 그런가 슈도코드로 힌트를 주고 시작합니다. 가볍게 살펴볼까요.
PatternCount(Text, Pattern)
count ← 0
for i ← 0 to |Text| − |Pattern|
if Text(i, |Pattern|) = Pattern
count ← count + 1
return count
특정 Pattern이 주어질 시, 해당 Pattern이 Text에서 몇 번 확인되는지에 대한 내용입니다. 단순히 for 루프 안에다가 if 문을 두어 비교하면 되는 쉬운 문제입니다.
import pandas as pd
file = pd.read_table("../../Downloads/rosalind_ba1a.txt", header= None)
Rosalind는 파일을 받은 뒤에 답안을 따로 적거나 다시 업로드해야 되는 방식입니다. 그래서 그냥 편의를 위해 pandas를 적용해서 불러왔습니다. file 변수로 파일을 불러오게 되면, file[0][0]에는 Text가, file[0][1]에는 Pattern이 남게 됩니다.
file[0][0]
'GGAGTTAATAGTTAATGAGTCATCAGTTAATAGTTAATGCGAGTTAATAAGTTAATGAGTTAATTAGTGGGTCTCAGTTAATGTTAAGTTAATAGTTAATTCAAAAGTTAATCAGTTAATGATGGACGTCAGTTAATGTGGGTTATAGTTAATGTTAGTTAATGTCAGTTAATAGTTAATAGTTAATGCCAGTTAATTGGAGTTAATAGTTAATCAGTTAATGGGAAAAGTTAATGAACCTAGTTAATAAGTTAATAGTTAATGGATAGTTAATAGTTAATTAAGTTAATACATAAAGTTAATGCTCAAAGTTAATAGTTAATCAGCAGTTAATCGCAAGTTAATAGTTAATTAGTTAATTAAGTTAATAGTTAATGCTTAAGTTAATAGTTAATAGTTAATGAAAGTTAATAGTTAATTAGTGAGTTAATATTAGTTAATAGTTAATTGGAGTTAATGAGTTAATAGCTGCCCTAGTTAATAGTTAATATGAGTTAATAGTTAATGACAAGTTAATAGTTAATTTAGTTAATATCAGTTAATATAGTTAATAGTTAATTTAGTTAATGGAAGTTAATAGTTAATAGTTAATCAGTAGTTAATTGTGAGTTAATCCGATTAGTTAATTTCTGGACAAGCATGAAGTTAATGAGTTAATAGTTAATGAGTTAATCAGTTAATAACACAGAGTTAATCAGTTAATATAGTTAATAGACAGTTAATAGTTAATCTAGTTAATAAGTTAATTCGTCGAAGTTAATAGTTAATAGTTAATGTCAGTTAATGACAGAAAGTTAATGTAGTTAATCAAGTTAATTCTCAGTTAATCGGGGAGTTAATAGTTAATTGCCGAGTTAATAGTTAATGCTAGTTAATATTCAGTTAATAGTTAATTTGTAATTGACAAAGTTAATAGTTAATCCCAGTTAATGTCCAAGTTAATAGTTAATATGAGTTAATAGGACTAGTTAATAGTTAATAGTTAATGAGTTAATCAGTTAATCAGTTAATAGTTAATAGCTAAAAAATCAGTTAATAGTTAATATCGGCGTTAGTTAAT'
그 다음으로 슈도코드에 맞게 파이썬으로 다시 함수를 작성해 줍니다.
def PatternCount(Text, Pattern):
count = 0
for i in range(len(Text)-len(Pattern)):
if Text[i : i+len(Pattern)] == Pattern :
count += 1
return count
if문을 돌리면서 슬라이싱된 Text가 Pattern과 일치하는 지 확인하고, 그 경우에 맞게 count를 올려주면 됩니다.
PatternCount(file[0][0], file[0][1])
38
좋아요. 초반이라 아직까지는 할만하네요. 다음 문제로 넘어가 봅니다.
'Python study > Rosalind' 카테고리의 다른 글
[Rosalind] BA1D - Find All Occurrences of a Pattern in a String (0) | 2022.08.04 |
---|---|
[Rosalind] BA1C - Find the Reverse Complement of a String (0) | 2022.08.03 |
[Rosalind] BA1B - Find the Most Frequent Words in a String (0) | 2022.08.02 |