GitHubSeob
C++ / 백준 / 1449 / 수리공 항승 본문
문제 |
https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
문제풀이 |
테이프를 자르거나 겹쳐서 붙이는 것은 굳이 생각 안 해도 된다.
물을 막을 때, 그 위치의 좌우 0.5만큼 간격을 주면 1만큼의 테이프가 필요 없다고 생각하면 된다.
따라서 입력받은 테이프의 길이를 1 빼준다.
그다음 정렬을 해서 왼쪽부터 테이프를 붙인다.
테이프를 붙이게 되면 위치를 저장해 놓고 다음 구멍에 갔을 때, 이미 테이프가 붙여져 있는지 확인을 한다.
안 붙여져 있으면 붙이고 위치를 새로 기록해 놓는다.
코드 |
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N(0), L(0);
cin >> N >> L;
--L;
vector<int>location(N, 0);
for (int idx = 0; idx < N; ++idx) {
cin >> location[idx];
}
sort(location.begin(), location.end());
int prev(-1000), answer(0);
for (int idx = 0; idx < N; ++idx) {
if (location[idx] > prev + L) {
++answer;
prev = location[idx];
}
}
cout << answer;
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 1932 / 정수 삼각형 (0) | 2024.06.05 |
---|---|
C++ / 백준 / 4948 / 베르트랑 공준 (0) | 2024.03.28 |
C++ / 백준 / 1309 / 동물원 (0) | 2024.03.28 |
C++ / 백준 / 24498 / blobnom (0) | 2023.12.12 |
C++ / 백준 / 2428 / 표절 (0) | 2023.12.09 |