백준 알고리즘 1449번 - 수리공 항승
2019. 5. 31. 16:45ㆍ프로그래밍/백준 알고리즘
그리디 알고리즘을 사용하는 문제.
간단히 생각해보면, 앞에 부터 채워나간다고 생각하면 편하다.
이미 채워져있다면 넘어가고, 채워지지 않았다면 채우는 과정을 반복한다.
// 1. 오름차순 정렬
// 2. 맨 왼쪽꺼 0.5 떨어진 지점에 테이프를 붙임 +1
// 3. 다음 지점 앞뒤로 + 0.5지점에 테이프가 붙어있다면
// 3-1 . 3번이 true라면 다음 지점으로 건너 뛰고 3번으로
// 3-2 . 3번이 false라면 2번으로 간다.
#include <iostream>
#include <algorithm>
using namespace std;
//0.5처리하기 싫으니까 다 두배로 하자.
int arr[4000]={0};
bool check[4000]={false};
int main()
{
int n,l,count=0;
cin>>n>>l;
l=l*2;
for(int i=0;i<n;i++){
cin>>arr[i];
arr[i]=arr[i]*2;
}
sort(arr,arr+n);
for(int i=0;i<n;i++){
if(check[arr[i]]){
//cout<<"already taped : "<<arr[i]<<endl;
continue;
}
else{
for(int j=0;j<l-1;j++)
{
check[arr[i]+j]=true;
//cout<<"막는다"<<arr[i]+j<<endl;
}
count++;
}
}
cout<<count;
}
'프로그래밍 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1783번 - 병든 나이트 (0) | 2019.06.11 |
---|---|
백준 알고리즘 1744번 - 수 묶기 (0) | 2019.06.11 |
백준 알고리즘 10026번 - 적록색약 (0) | 2019.05.30 |
백준 알고리즘 2331번 - 반복수열 (0) | 2019.05.27 |
백준 알고리즘 14502번 - 연구소 (0) | 2019.05.23 |