문제를 살펴보면 집의 개수 N, 공유기 개수 C가 있고 N개의 집의 개수가 주어졌을때 공유기 사이의 최대 거리를 구하는 문제입니다.
이 문제에서 중요한 점은 입력으로 받은 값들을 배열에 저장하고 오름차순으로 정렬시킨다음에 start와 end를 최소거리와 최대거리로 설정을하고 시작해야합니다.
우선 start는 시작점인 1로 설정하고 end는 가장큰 9에서 작은1사이의 거리이므로 8이됩니다. -> arr[-1] - arr[0]
위의 코드는 while문 코드인데 처음에 mid값을 start와 end의 중간값으로 설정합니다. 그리고 현재 위치를 의미하는 cur변수에 arr배열의 첫번째 값을 넣습니다. start가 1로 시작하므로 cnt도 1로 시작합니다. (1번집에 공유기를 이미 설치했다고 가정)
이제 for문 돌면서 공유기가 설치될 수 있는 거리를 start와 end가 같아질 때까지 반복합니다.
여기서 공유기를 설치할 수 있는 현재의 위치인 cur변수가 변하면서 설치될때 cnt를 1시킵니다. cnt가 공유기 갯수 이상일때 result에 해당 mid(거리)를 반환해줘서 원하는 결과값을 얻을 수 있게됩니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준]13334 철로 [Python] (0) | 2023.04.18 |
---|---|
[백준]8983 사냥꾼 [Python] (0) | 2023.04.17 |
[백준]2468 안전영역 [Python] (1) | 2023.04.13 |
[백준]10819 차이를 최대로 [Python] (0) | 2023.04.12 |
[백준]1074 Z [Python] (0) | 2023.04.10 |