반응형
문제 정보는 아래 링크를 확인해주세요!
문제 접근 방법
- 첫 번째 위치부터 while문을 돌면서 설치된 기지국 범위 안에 있는지를 검사
- 설치된 기지국 범위 밖에 있다면, 현재 위치에서 기지국을 설치했을 때 전파가 가장 멀리 퍼질 수 있는 값인 2*w로 설정하고, 현재 위치를 2*w+1로 설정한 후 결과값+1
- 설치된 기지국 범위 안에 있다면, 현재 위치를 설치된 기지국 범위+1로 설정
- 현재 위치가 N에 도달할 때까지 반복
[소스 코드]
package algorithm.programmers;
/*
* 2018 summer/winter conding
* 기지국 설치
* */
public class Pro12979 {
public static int solution(int n, int[] stations, int w) {
int answer = 0;
int location = 1;//기지국을 설치할 현재 위치
int idx = 0;//설치된 기지국 인덱스
while(location <= n) {//위치가 전체 갯수보다 작거나 같을 때까지
//설치된 기지국 범위 안에 있으면서, 현재 위치가 설치된 기지국의 범위보다 클 때,
if (idx < stations.length && location >= stations[idx]-w) {
location = stations[idx]+w+1;//설치된 기지국의 범위보다 +1 큰 위치로 이동
idx++;//다음 인덱스로 이동
} else {//설치된 기지국 범위 밖일 때,
location += 2*w+1;//양쪽으로 범위를 가질 최댓값 +1을 해준다.
answer++;//기지국을 설치했으므로, 결과값을 추가
}
}
return answer;
}
}
반응형
LIST
'알고리즘 > 연습문제' 카테고리의 다른 글
프로그래머스 - 점프와 순간이동(feat. Java) (0) | 2020.05.11 |
---|---|
프로그래머스 - 숫자 게임(feat. Java) (0) | 2020.05.11 |
프로그래머스 - 스티커 모으기(2) (feat. Java) (0) | 2020.05.11 |
프로그래머스 - 방문 길이 (feat. Java) (0) | 2020.05.11 |
프로그래머스 - 쿠키 구입(feat. Java) (0) | 2020.05.11 |