[2교시] 01. 크림방
KOI 빵집에서는 크림을 넣은 빵을 판다. KOI 빵집은 총 N × K개의 빵을 만들었다. KOI 빵집은 일렬로 놓여 있는 빵을 앞에서부터 순서대로 K개씩 묶어서 한 묶음으로 판매할 것이다. 즉, 총 N개의 빵 묶음이 있다. 하지만 빵을 급하게 만드는 바람에, 빵 중 일부에는 크림이 들어있지 않다. 만약 크림이 없는 빵이 한 묶음에 P개 이상 있다면 그 묶음은 팔 수 없다.다시 말해, 빵 묶음은 K개의 빵 중 크림이 없는 빵이 P개 미만이어야 팔 수 있다.
각 빵에 크림이 들어 있는지에 대한 정보가 주어진다.
이 때 팔 수 있는 빵 묶음의 수를 출력하여라.
제약 조건
- • 주어지는 모든 수는 정수이다.
-
• 1 ≤ N ≤ 50
- • 1 ≤ K ≤ 50
-
• 1 ≤ P ≤ K
부분문제
- (5점) N = 1
- (5점) K = 1
- (5점) 모든 빵에 크림이 들어있거나, 모든 빵에 크림이 들어있지 않다.
- (10점) 같은 묶음에 속하는 빵들은 모두 크림이 들어있거나, 모두 크림이 들어있지 않다.
- (10점) P = 1
- (65점) 추가 제한 없음.
입력 형식
첫 번째 줄에 N, K, P가 공백을 하나 사이에 두고 주어진다.
두 번째 줄에는 앞쪽에 놓여있는 빵부터 순서대로 빵에 크림이 들어 있는지를 나타내는 정수가 공백을 사이에 두고 주어진다.
만약 0이 주어진다면 빵에 크림이 없는 것이고, 1이 주어진다면 빵에 크림이 있는 것이다.
출력 형식
첫 번째 줄에 팔 수 있는 빵 묶음의 수를 출력한다.
예제 1
표준 입력
2 3 2
1 1 0 1 0 0
표준 출력
1
========== 풀이 C =========
#include
//N : 묶음수
//K : 묶음당 개수
//P : 크림빵이 없는 기준 개수
int main(){
int N,K,P;
int S = 0; //팔 수있는 빵 묶음 수
int p = 0; //현재 묶음의 크림이 없는 빵의 개수
int t; //임시로 빵 정보를 받을 변수
scanf("%d%d%d",&N,&K,&P);
for(int i=0;i p = 0; // 크림이 없는 빵의 개수 초기화
for(int j=0;j scanf("%d",&t);
if(t==0) p++; // 크림이 없으면 카운트
}
if(p < P) S++; // 크림이 없는 빵이 P개 미만이면 묶음 개수 카운트
}
printf("%d\n",S);
return 0;
}
========== 풀이 Python =========
N,K,P = map(int,input().split())
B = [int(x) for x in input().split()]
S = 0
for i in range(N):
T = B[i*K:i*K+K] # K개씩 슬라이스
if T.count(0) < P :
S += 1
print(S)