문제 설명
1. 5g가 도달하지 않는 곳에 기지국 설치
2. 최소로 설치할 수 있는 기지국의 개수 출력
풀이
1. N <= 200,000,000 이므로 모든 아파트의 기지국 설치 여부를 판단하는 건 X..
2. 이미 설치된 기지국을 확인하면서, 기지국 좌우로 전파가 전달되지 않는 영역 확인
3. 연속된 전파가 전달되지 않는 영역을 하나의 그룹으로 생각 ex. 1-2, 6-9
4. 그룹의 크기를 알면 그 그룹에 몇 개의 기지국이 필요한 지 알 수 있음! -> answer에 더해주기
코드
#include <iostream>
#include <vector>
using namespace std;
int solution(int n, vector<int> stations, int w)
{
int answer = 0;
int cnt = 0;
int idx = 1;
for(int i=0; i<stations.size(); i++) {
int width = stations[i] - w - idx;
if(width > 0) {
if(width % (w * 2 + 1) == 0) {
answer += width / (w * 2 + 1);
} else {
answer += width / (w * 2 + 1) + 1;
}
}
idx = stations[i] + w + 1;
}
if(idx <= n) {
if((n - idx + 1) % (w * 2 + 1) == 0) {
answer += (n - idx + 1) / (w * 2 + 1);
} else {
answer += (n - idx + 1) / (w * 2 + 1) + 1;
}
}
return answer;
}
'Study > 알고리즘' 카테고리의 다른 글
[프로그래머스] 12903. 가운데 글자 가져오기 (swift) (0) | 2020.07.21 |
---|---|
MySQL 정리 (0) | 2020.06.04 |
[백준] 1922. 네트워크 연결 (C++) (0) | 2020.05.28 |
[프로그래머스] 12978. 배달 (C++) (0) | 2020.05.28 |
[프로그래머스] 49994. 방문 길이 (C++) (0) | 2020.05.28 |