[C++][백준 32751] 햄버거

PublicMinsu·2024년 12월 1일
0

문제

접근 방법

4가지 조건을 충족하는지 확인하는 문제입니다.
하지만 첫 번째 조건인 '재료는 아래에서 위로 쌓는다.'은 입력에서부터 충족된 상태로 들어오기에 확인할 필요가 없습니다.
확인해야 할 조건은 2~4번째 조건입니다.

코드

#include <iostream>
using namespace std;
int N, cnt[4];
string S;

void input()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> N;
    for (int i = 0; i < 4; ++i)
    {
        cin >> cnt[i];
    }
    cin >> S;
}

bool solve()
{
    if (!(S.front() == S.back() && S.front() == 'a'))
    {
        return false;
    }

    for (int i = 0; i < N; ++i)
    {
        if (--cnt[S[i] - 'a'] < 0)
        {
            return false;
        }

        if (i > 0 && S[i] == S[i - 1])
        {
            return false;
        }
    }

    return true;
}

int main()
{
    input();
    cout << (solve() ? "Yes" : "No");
    return 0;
}

풀이

문자열의 첫 번째, 마지막이 빵인지 확인한 뒤 반복문을 통해 가진 재료 이상으로 재료가 요구되는지, 이전 재료와 연속되는지 확인하면 됩니다.

profile
연락 : publicminsu@naver.com

0개의 댓글