https://programmers.co.kr/learn/courses/30/lessons/12979
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;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[2020 카카오 인턴십] 보석 쇼핑 (0) | 2020.09.03 |
---|---|
[2020 카카오 인턴십] 키패드 누르기 (0) | 2020.09.01 |
[프로그래머스] 방문 길이 (0) | 2020.05.21 |
[프로그래머스] 배달 - Java (0) | 2020.05.21 |
[프로그래머스] 영어 끝말잇기 - Java (0) | 2020.05.19 |