[C++][백준 29791] 에르다 노바와 오리진 스킬

PublicMinsu·2024년 6월 14일
0

문제

접근 방법

시간을 기록해 주면서 대기 시간이 지났는지 확인해 준다.

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
int prevTime, answer;

vector<int> v;

void calc(int size, int coolTime)
{
    v.clear();

    answer = 1;

    while (size--)
    {
        cin >> prevTime;
        v.push_back(prevTime);
    }

    sort(v.begin(), v.end());

    prevTime = v.front();

    for (const int &curTime : v)
    {
        if (curTime - prevTime < coolTime)
        {
            continue;
        }

        prevTime = curTime;
        ++answer;
    }

    cout << answer;
}

int main()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> N >> M;

    v.reserve(max(N, M));

    calc(N, 100);
    cout << " ";
    calc(M, 360);

    return 0;
}

풀이

정렬 후 확인해 주면 된다.
각 스킬의 대기 시간이 지나고 난 뒤 스킬이 눌렸는지 확인해 주면서 눌린 시간을 갱신해 주면 횟수를 구할 수 있다.

profile
연락 : publicminsu@naver.com

0개의 댓글