https://www.acmicpc.net/problem/19941
19941번: 햄버거 분배
기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사
www.acmicpc.net
햄버거를 최대한 많이 먹으려면 사람들이 자신이 먹을 수 있는 햄버거들 중에 제일 앞에 있는 햄버거를 먹어야 뒤에 있는 사람들도 햄버거를 최대한 먹을 수 있다.
사람을 만날 때 마다 사정거리 내에 있는 햄버거들을 탐색하여 먹는다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
char st[20100];
int main()
{
int n, k;
int x, y;
int cnt = 0;
scanf("%d%d", &n, &k);
scanf("%s", &st);
for (int i = 0; i < strlen(st); i++) {
if (st[i] == 'P') { // 사람을 만난 경우
x = i - k; // 먹을수 있는 시작점
y = i + k; // 먹을수 있는 끝점
if (i - k < 0) x = 0;
if (i + k >= n) y = n - 1;
for (int j = x; j <= y; j++) {
if (st[j] == 'H') { // 햄버거를 찾으면 먹어서 비우고 탐색 종료
st[j] = 'x';
cnt++;
break;
}
}
}
}
printf("%d", cnt);
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
이동하기_백준11048 (0) | 2023.08.29 |
---|---|
경비원_백준2564 (0) | 2023.08.17 |
창고 다각형_백준2304 (0) | 2023.08.17 |
정올_제곱근1240 (0) | 2023.08.14 |
꿀따기_백준21758 (0) | 2023.08.14 |