기록마다 측정값 values와 점검 결과 approved가 있어요. 길이가 정확히 width인 연속 구간 중 모든 점검 결과가 1이고 측정값의 합이 minimum 이상인 구간 수를 구해요. 서로 겹치는 구간도 각각 세요.
solution(values, approved, width, minimum)이 구간 수를 반환하도록 빈칸을 채워 주세요.
매개변수와 반환값
- 두 리스트의 같은 인덱스는 같은 기록이며 길이
n은 1~300이에요. - 측정값은 0~1,000, 점검 결과는 0 또는 1이에요.
width는 1n,300,000이에요.minimum은 0- 반환값은 조건을 만족한 구간 수인 정수예요.
예시
values = [3, 4, 5, 2],approved = [1, 1, 0, 1],width = 2,minimum = 7이면 결과는1이에요.values = [2, 5, 4, 3],approved = [1, 1, 1, 1],width = 2,minimum = 7이면 결과는3이에요.
실행용 입출력
첫 줄에 n width minimum, 둘째 줄에 측정값 n개, 셋째 줄에 점검 결과 n개를 입력해요. 반환값 하나를 출력해요.
예시 입력
4 2 7 3 4 5 2 1 1 0 1
예상 결과
1
예시 입력
4 2 7 2 5 4 3 1 1 1 1
예상 결과
3
핵심 개념
counting-aggregation: 구간마다 합계와 승인 여부를 따로 누적해요. 합계가 충분해도 승인되지 않은 항목이 하나 있으면 그 구간은 제외해요.array-1d:values[i]와approved[i]는 같은 기록을 읽어요.len(values)는 리스트 길이예요.loops:range(begin, end)는 begin부터 end 직전까지 반복해요. 마지막 시작 위치도 포함되는지 확인해요.conditionals:and는 두 조건이 모두 참일 때만 참이에요.True와False는 논리값이에요.
입력 하네스의 input()은 한 줄의 문자열을 읽고, .split()은 공백으로 항목을 나눠요. map(int, ...)는 각 항목을 정수로 바꾸고 list(...)는 그 결과를 리스트로 모아요. range(n)은 0부터 n-1까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.