2026. 1. 23. 00:54ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/28214


접근 방법 - 기초적인 사칙연산 문제
백준의 28214번 문제는 기초적인 사칙연산을 활용하여 비교적 간단하게 해결할 수 있는 문제이다.
해당 문제는, n*k개로 나열된 크림빵을 앞에서부터 순차적으로 k개씩 한 묶음으로 묶어낼 때 판매할 수 있는 빵 묶음을 카운팅 하여 이를 정답으로 출력하면 되는 문제이다.
이때 문제에, 크림이 없는 빵이 p개 미만이어야만 해당 빵 묶음을 판매할 수 있다는 전제 조건이 함께 적혀있다.
(각 빵에 크림이 들어있는가에 대한 값 또한 입력으로 함께 주어진다.)
이미 나열된 크림빵을 순서대로 한 묶음씩 묶어가며, 위의 판매 조건을 만족하는 빵 묶음의 총개수를 세면 되는 문제이다.
필자는, 각 k개 빵의 크림 여부(?)를 입력받을 때 크림이 없는 빵의 개수를 세어나간 뒤, 이 값을 p와 비교하면서 판매 여부를 판별해 나갔다.
보다 자세한 설명은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 빵의 개수(n, k)와 p를 순차적으로 입력받는다.
2) 판매할 수 있는 빵 묶음의 총개수를 저장할 변수 result를 0으로 초기화하여 미리 선언해 둔다.
3) n의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.
(이때, 각 k개의 빵 중 크림이 없는 빵의 개수를 세어가기 위해, 한번 순회할 때마다 임의의 변수 no를 0으로 초기화하여 미리 선언해 두도록 한다.)
- 다른 반복문을 k번만큼 수행하여, 각 빵의 크림 여부를 하나씩 입력받도록 한다.
이때 입력을 받는 대로, num값을 확인한다. 만약 0의 값을 가진다면, 이는 크림이 없음을 의미하기 때문에 위에서 미리 선언해 두었던 no 변수에 1을 추가하도록 한다.
- k번의 입력 및 연산을 모두 수행하였다면, 현재의 no 값을 확인하도록 한다.
만약 no 값이 p보다 작은 값을 가진다면, 이 빵 묶음은 판매할 수 있음을 뜻하기 때문에, result에 1을 추가한다.
4) 3)의 연산이 모두 완료되었다면, 최종적으로 저장된 result의 값을 정답으로 출력한 뒤 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 28214번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n, k, p;
cin >> n >> k >> p;
int result = 0;
for (int i = 0; i < n; i++) {
int no = 0;
for (int j = 0; j < k; j++) {
int num;
cin >> num;
if (num == 0) { no++; }
}
if (no < p) { result++; }
}
cout << result << endl;
}
제출 결과

(2025.01.29 백준 28214번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
| [백준 BOJ] 32776번 가희와 4시간의 벽 2 (C++/cpp) (0) | 2026.01.23 |
|---|---|
| [백준 BOJ] 30793번 gahui and sousenkyo 3 (C++/cpp) (0) | 2026.01.18 |
| [백준 BOJ] 14402번 야근 (C++/cpp) (0) | 2026.01.12 |
| [백준 BOJ] 29986번 Amusement Park Adventure (C++/cpp) (0) | 2026.01.11 |
| [백준 BOJ] 1755번 숫자놀이 (C++/cpp) (0) | 2026.01.09 |