[백준(BOJ)] 어두운 굴다리(17266번)_C++
2024. 3. 23. 16:39ㆍProblem Solving/Greedy & 구현
728x90
반응형
SMALL
커버해야 할 가장 긴 길이를 구하면 되는 문제다.
함정아닌 함정이 있다면
-거리의 시작과 첫번째 가로등간의 거리
-가로등간의 거리
-마지막 가로등과 거리의 끝간의 거리
위의 3가지를 잘 구분해서 구해야 한다는 것이다.
가로등은 양옆으로 비출 수 있기 때문에 특히 가로등간의 거리는 그 값의 절반만을 취해야 한다.
때문에 3가지를 구분해서 구해야 하고, 그러면 쉽게 통과할 수 있을 것이다.
정답 코드
#include <iostream>
using namespace std;
int n, m, s, e, Max;
bool road[100'001];
int main(){
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
//input
cin >> n >> m;
for (int i = 0; i < m; i++){
int x;
cin >> x;
road[x] = true;
if (i == 0)
s = x;
if (i == m - 1)
e = x;
}
//check s ~ e
int pre = s;
for (int i = s + 1; i <= e; i++){
if (road[i] == true){
Max = max(Max, i - pre);
pre = i;
}
}
Max = Max % 2 == 0 ? Max / 2 : Max / 2 + 1;
//find max range
Max = max(Max, s);
Max = max(Max, n - e);
//output
cout << Max;
}728x90
반응형
LIST
'Problem Solving > Greedy & 구현' 카테고리의 다른 글
| [백준(BOJ)] 비슷한 단어(2607번)_C++ (0) | 2024.04.30 |
|---|---|
| [백준(BOJ)] 햄버거 분배(19941번)_C++ (0) | 2024.04.25 |
| [백준(BOJ)] 크로스 컨트리(9017번)_C++ (0) | 2024.03.20 |
| [백준(BOJ)] 스위치 켜고 끄기(1244번)_C++ (0) | 2024.03.19 |
| [백준(BOJ)] 쿠키의 신체 측정(20125번)_C++ (0) | 2024.03.18 |