본문 바로가기

알고리즘/C++

햄버거분배_백준19941

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