Published:
Updated:

  • 문자열의 알파벳 개수를 세줘야 하는 문제니 딕셔너리 사용


Solution

import collections
import sys


def solution(S: int, P: int, DNA: str, A: int, C: int, G: int, T: int) -> int:
    # 만들 수 있는 비밀번호의 종류의 수
    answer = 0
    # 알파벳 개수 계산을 위한 딕셔너리
    password = collections.defaultdict(int)

    for i in range(P):
        password[DNA[i]] += 1

    if password['A'] >= A and password['C'] >= C and password['G'] >= G and password['T'] >= T:
        answer += 1

    for i in range(P, S):
        password[DNA[i]] += 1
        password[DNA[i - P]] -= 1

        if password['A'] >= A and password['C'] >= C and password['G'] >= G and password['T'] >= T:
            answer += 1

    return answer


S, P = map(int, sys.stdin.readline().rstrip().split())
DNA = sys.stdin.readline().rstrip()
A, C, G, T = map(int, sys.stdin.readline().rstrip().split())

print(solution(S, P, DNA, A, C, G, T))


Reference

Leave a comment