Skip to content

Conversation

@JHLEE325
Copy link
Contributor

🧷 문제 링크

https://www.acmicpc.net/problem/2110

🧭 풀이 시간

50분

👀 체감 난이도

✏️ 문제 설명

좌표평면상에 집들의 위치가 주어지고 공유기의 개수가 주어졌을 때
공유기 사이의 거리를 가장 멀리 설치하는 경우의 거리를 구하는 문제입니다.

🔍 풀이 방법

처음에는 이분탐색으로 양끝 설치 후 가운데 설치, 양끝과 가운데를 끝으로 하는 것으로 다시 이분탐색하는 식으로 풀이하려했으나 가운데 인덱스가 항상 가운데위치하는 점은 아닐 수도 있다는 점을 간과 했습니다.
그래서 한동안 고민하다가 접근법에 대한 힌트를 얻어서 풀이했습니다.
공유기를 설치할만한 거리를 우선 구하고
그 거리로 공유기를 설치했을 때 주어진 갯수의 공유기를 전부 설치할 수 있는지 판단하는 함수를 두어 풀이했습니다.

static boolean canInstall(int distance) {
        int count = 1;
        int lastInstalled = house[0];

        for (int i = 1; i < n; i++) {
            if (house[i] - lastInstalled >= distance) {
                count++;
                lastInstalled = house[i];
            }
        }

        return count >= c;
    }

⏳ 회고

골드 4 문제 치고는 접근법이 어려웠던것 같은데 더 노력해야 될 것 같습니다.

@JHLEE325 JHLEE325 added hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Jul 21, 2025
@ShinHeeEul ShinHeeEul merged commit dbb9bb6 into main Jul 21, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants