티스토리 뷰

PS

[백준] 17266 어두운 굴다리 C++

Eastplanet 2024. 1. 24. 23:03
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int N, M;
vector<int> pos;

bool posibleAllBright(int height) {
    int position = 0;

    for (int curr : pos) {
        int leftLight = curr - height;
        int rigntLight = curr + height;

        if (position < leftLight)
            return false;

        position = rigntLight;
    }

    if (position >= N)return true;
    else return false;
}


int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    
    cin >> N >> M;
    for (int i = 0; i < M; i++) {
        int tmp;
        cin >> tmp;
        pos.push_back(tmp);
    }
    
    int lo = 0;
    int hi = N;
    int mid = ((lo + hi) / 2);

    while (lo != hi) {

        if (hi - lo <= 1) {
            if (posibleAllBright(hi)) {
                lo = hi;
            }
            else {
                hi = lo;
            }

            break;
        }

        if (posibleAllBright(mid)) {
            hi = mid;
            mid = ((lo + hi) / 2);
        }
        else {
            lo = mid;
            mid = ((lo + hi) / 2);
        }
    }

    cout << lo;

   
}

 

가로등의 높이가 10만까지 가능하고

가로등의 개수또한 10만까지 가능하다.

가로등의 높이의 경우 N의 높이이면 항상 가능하다.

이후 0~N범위의 이분탐색을 통해 적절한 가로등의 높이를 찾을 수 있다.

'PS' 카테고리의 다른 글

[백준] 10942번 팰린드롬? [JAVA]  (0) 2024.02.02
[백준] 16678번 모독 JAVA  (1) 2024.01.30
[BOJ] 31248번 3+1 하노이 탑 C++  (1) 2024.01.22
[BOJ] 9252번 LCS 2 JAVA  (0) 2024.01.22
[백준] 3986번 좋은 단어 [JAVA]  (0) 2024.01.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함