※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25972번 문제인 도미노 무너트리기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25972
주어지는 도미노들을 x좌표 오름차순으로 살펴보면서, 지금 도미노가 쓰러졌을 때 다음 도미노가 쓰러질지 쓰러지지 않을지를 판단해 쓰러지지 않는다면 추가적으로 그 도미노를 쓰러트리는 것으로 문제를 해결하자. 이와 같은 풀이는 각 도미노는 직접 쓰러지거나 바로 이전 도미노가 쓰러지면서 같이 쓰러지게 되는 두 가지 방법으로만 쓰러질 수 있다는 점을 관찰하는 것으로 알아낼 수 있다.
입력으로 주어지는 도미노들의 x좌표가 예제와 같이 항상 정렬되어 있다는 조건이 없음에 유의해 구현하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, ans;
pair<int, int> arr[500000];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) cin >> arr[i].first >> arr[i].second;
sort(arr, arr + N);
int old = -1;
for (int i = 0; i < N; i++) {
if (old < arr[i].first) ans++;
old = arr[i].first + arr[i].second;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25985 // C++] Fastestest Function (0) | 2022.11.17 |
---|---|
[BOJ 17637 // C++] Count Squares (0) | 2022.11.17 |
[BOJ 25991 // C++] Lots of Liquid (0) | 2022.11.16 |
[BOJ 25973 // C++] 어지러운 트리 (0) | 2022.11.15 |
[BOJ 1748 // C++] 수 이어 쓰기 1 (0) | 2022.11.14 |