https://www.acmicpc.net/problem/1911
1911번: 흙길 보수하기
어젯밤 겨울 캠프 장소에서 월드 본원까지 이어지는, 흙으로 된 비밀길 위에 폭우가 내려서 N(1 ≤ N ≤ 10,000)개의 물웅덩이가 생겼다. 월드학원은 물웅덩이를 덮을 수 있는 길이가 L(1 ≤ L ≤ 1,000
www.acmicpc.net
생각해보기
- 시작점을 옮겨가며 물웅덩이 범위를 넘을때 까지 널빤지를 쌓아도 된다.
- 더 빠르게 하려면 수학적 공식으로 바꿔서 생각해보자.
- 이전에 설치한 널빤지가 다음 웅덩이를 덮어줄 수도 있다.
코드
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
typedef pair<int,int> PII;
int N, L;
vector<PII> swamp;
void input(){
int a,b;
cin>>N>>L;
for(int i=0;i<N;++i){
cin>>a>>b;
swamp.push_back({a,b});
}
sort(swamp.begin(),swamp.end());
}
void solution(){
int ans = 0, now = 0;
for(int i=0;i<swamp.size();++i){
if(now < swamp[i].first)
now = swamp[i].first;
int next = swamp[i].second;
int num = ceil((double)(next-now)/L);
ans += num;
now += num * L;
}
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie();
cout.tie();
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 24042 - 횡단보도 (0) | 2023.07.19 |
|---|---|
| 1522 - 문자열 교환 (0) | 2023.07.18 |
| 2098 - 외판원 순회 (0) | 2023.07.18 |
| 2631 - 줄세우기 (0) | 2023.07.17 |
| 20922 - 겹치는 건 싫어 (0) | 2023.07.17 |
댓글