문제설명
그리디 알고리즘
https://www.acmicpc.net/problem/1449
1449번: 수리공 항승
첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나
www.acmicpc.net
해결방법
startPos 는 테이프를 붙이는 시작점
lastPos 는 테이프를 붙였을 경우 테이프의 마지막 끝 부분의 위치
다음 구멍이 lastPos보다 작은 값이라면 테이프에 가려진 것이다.
다음 구멍이 lastPos보다 큰 값이라면 테이프에 가려지지 못한것이다.
이 경우 새로운 테이프를 붙여야 하므로
startPos와 lastPos값을 갱신한다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
//INPUT
int N, L;
cin >> N >> L;
vector <float> leak(N);
for (int i = 0; i < N; i++) { cin >> leak[i]; }
sort(leak.begin(),leak.end());
//SEARCH
int count = 1;
float startPos = leak[0] - 0.5;
float lastPos = startPos + L;
for (int i = 0; i < N; i++)
{
if(leak[i] > lastPos)
{
startPos = leak[i] - 0.5;
lastPos = startPos + L;
count++;
}
}
cout << count;
}
'개발 > 백준' 카테고리의 다른 글
[백준] 19941번. 햄버거 분배 (1) | 2023.12.26 |
---|---|
[백준] 18310번. 안테나 (C++) (0) | 2023.12.26 |
[백준] 13305번. 주유소 (C++) (1) | 2023.12.20 |
[백준] 10451번. 순열 사이클 (C++) (0) | 2023.07.19 |
[백준] 2745번. 진법 변환 (C++) (0) | 2023.06.27 |