https://school.programmers.co.kr/learn/courses/30/lessons/12979
코딩테스트 연습 > Summer/Winter Coding(~2018) > 기지국 설치
난이도: LEVEL3
알고리즘 유형: 구현
내가 틀렸던 부분
첫 번째 station의 커버 범위가 1번 아파트까지 커버하는 경우를 생각 못했다.
ex)
내 코드에서는 필요한 구간의 크기를 need로 표현하는데
만약 첫 번째 station의 위치가 4이고 w가 10이면 station이 커버하는 범위가 4 - 10 = -6 이라는 결과가 나와서
결과가 이상해진다.
정답 코드
class Solution {
static int answer = 0;
public int solution(int n, int[] stations, int w) {
int size = stations.length; // 시작 기지국 개수
int range = (w * 2) + 1; // 1개의 기지국이 전파는 최대 범위
int end = 0; // 현재 기지국까지 전달된 범위
int index = 0;
while(end < n){
if(index < size){
// 설치된 기지국 index
int po = stations[index++];
if(end < po - w){ // 만약 현재 end에 기지국 전파가 안 닿는다면
int need = po - w - end - 1;
answer += need / range;
answer += need % range == 0 ? 0 : 1;
}
end = po + w;
continue;
}
// 남은 기지국이 없다면
int need = n - end;
answer += need / range;
answer += need % range == 0 ? 0 : 1;
end = n;
}
return answer;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL3 풍선 터트리기 (1) | 2024.11.03 |
---|---|
[JAVA] 프로그래머스 LEVEL3 N으로 표현 (0) | 2024.10.30 |
[JAVA] 프로그래머스 LEVEL3 정수 삼각형 (1) | 2024.10.30 |
[JAVA] 프로그래머스 LEVEL3 징검다리 건너기 (2) | 2024.10.28 |
[JAVA] 프로그래머스 LEVEL3 모두 0으로 만들기 (1) | 2024.10.28 |