[백준] 12891번: DNA 비밀번호

2023. 5. 1. 15:57개발 일기/코딩테스트 준비

책: Do It 알고리즘 코딩테스트 Python편

 

문제:

009 DNA 비밀번호

https://www.acmicpc.net/problem/12891

 

12891번: DNA 비밀번호

평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA”

www.acmicpc.net

 

코드:

check = [0] * 4

def remove(c):
    if c == 'A':
        check[0] -= 1 
    elif c == 'C':
        check[1] -= 1
    elif c == 'G':
        check[2] -= 1
    else:
        check[3] -= 1
        
def add(c):
    if c == 'A':
        check[0] += 1
    elif c == 'C':
        check[1] += 1
    elif c == 'G':
        check[2] += 1
    else:
        check[3] += 1

S, P = map(int, input().split())
L = str(input())
AC, CC, GC, TC = map(int, input().split())
cnt = 0

for i in range(len(L)):
    add(L[i])
    #print(str(check[0]) + ',' + str(check[1]) + ',' +str(check[2]) + ',' +str(check[3]))

    if i + 1 -(P-1) > 0:
        if check[0] >= AC and check[1] >= CC and check[2] >= GC and check[3] >= TC:
            cnt += 1
        remove(L[i + 1 - P])

print(cnt)