← 실전 문제

점검을 통과한 연속 기록

Python빈칸 채우기

기록마다 측정값 values와 점검 결과 approved가 있어요. 길이가 정확히 width인 연속 구간 중 모든 점검 결과가 1이고 측정값의 합이 minimum 이상인 구간 수를 구해요. 서로 겹치는 구간도 각각 세요.

solution(values, approved, width, minimum)이 구간 수를 반환하도록 빈칸을 채워 주세요.

매개변수와 반환값

  • 두 리스트의 같은 인덱스는 같은 기록이며 길이 n은 1~300이에요.
  • 측정값은 0~1,000, 점검 결과는 0 또는 1이에요.
  • width는 1n, minimum은 0300,000이에요.
  • 반환값은 조건을 만족한 구간 수인 정수예요.

예시

  1. values = [3, 4, 5, 2], approved = [1, 1, 0, 1], width = 2, minimum = 7이면 결과는 1이에요.
  2. 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까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기