Algorithm/프로그래머스
[프로그래머스] 기지국 설치
연어롤
2020. 5. 22. 13:53
https://programmers.co.kr/learn/courses/30/lessons/12979
코딩테스트 연습 - 기지국 설치
N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5
programmers.co.kr
while문 돌면서 기지국을 왼쪽부터 하나씩 찍어가는 방식(?)으로 해도 괜찮았을거 같은데
인덱스를 잘못 지정했는지 값이 제대로 안나오길래
각각의 간격 별로 기지국을 몇 개 설치해야 하는지 구하는 식으로 풀었다.
Math.ceil을 썼더니 효율성에서 시간 초과가 나서..ㅜㅜ 실수연산은 가급적 하지 말아야겠다는 교훈을 얻었다.
class Solution {
public int solution(int n, int[] stations, int w) {
int answer = 0;
int r = 2 * w + 1;
// 왼쪽 끝
int left = stations[0] - w - 1;
if (left > 0) {
answer += (left + r - 1) / r;
}
// 오른쪽 끝
int right = n - stations[stations.length - 1] - w;
if (right > 0) {
answer += (right + r - 1) / r;
}
// 나머지
for (int i = 1; i < stations.length; i++) {
int gap = stations[i] - stations[i-1] - 2 * w - 1;
answer += (gap + r - 1) / r;
}
return answer;
}
}