[C++][백준 1911] 흙길 보수하기

PublicMinsu·2023년 1월 20일
0

문제

접근 방법

널빤지로 덮은 부분은 다시 덮을 필요가 없다고 생각하면 된다. 그렇다면 끝부분까지 완벽하게 덮은 뒤 그 부분을 시작점으로 하면 되는 것이다.

코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int N, L, ret = 0, start = 0;
    cin >> N >> L;
    vector<pair<int, int>> v;
    while (N--)
    {
        int n1, n2;
        cin >> n1 >> n2;
        v.push_back({n1, n2});
    }
    sort(v.begin(), v.end());
    for (auto p : v)
    {
        start = max(start, p.first);
        int multi = (p.second - start + L - 1) / L;
        ret += multi;
        start += multi * L;
    }
    cout << ret;
    return 0;
}

풀이

나머지 연산으로 딱 떨어지는지 확인을 자주 했었는데 나눌 값으로 더하고 -1하고 나누면 굳이 나머지 연산을 안 해도 되어서 좋은 것 같다.

profile
연락 : publicminsu@naver.com

0개의 댓글