let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
let (S, P) = (input[0], input[1])
let sequence = Array(readLine()!)
let condition = readLine()!.split(separator: " ").map{ Int(String($0))! }
var answer = 0
var current = [0, 0, 0, 0]
var checkSecret = condition.filter{ $0 == 0 }.count
var start = 0, end = P-1
for i in 0...end {
add(String(sequence[i]))
}
start += 1
end += 1
if checkSecret == 4 {
answer += 1
}
while end < sequence.count {
remove(String(sequence[start-1]))
add(String(sequence[end]))
if checkSecret == 4 {
answer += 1
}
start += 1
end += 1
}
print(answer)
func add(_ letter: String) {
var index = 0
if letter == "A" {
index = 0
} else if letter == "C" {
index = 1
} else if letter == "G" {
index = 2
} else {
index = 3
}
current[index] += 1
if current[index] == condition[index] {
checkSecret += 1
}
}
func remove(_ letter: String) {
var index = 0
if letter == "A" {
index = 0
} else if letter == "C" {
index = 1
} else if letter == "G" {
index = 2
} else {
index = 3
}
if current[index] == condition[index] {
checkSecret -= 1
}
current[index] -= 1
}
주어진 {‘A’, ‘C’, ‘G’, ‘T’} 의 최소 개수 중에 0인 것이 있으면 조건을 만족한 것으로 간주하고 처음부터 checkSecret
의 값을 증가시켜주어야 한다.