본문 바로가기
문제/프로그래머스

c++ 프로그래머스_"기지국 설치"

by 나 진짜 못차마 2023. 6. 15.
728x90
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

예시 그림에서 나온 거 처럼

회색 영역(기지국의 전파가 전단 될 수 없는 영역)의 크기를

배열로 저장했다.

그리고 전파가 전달될 수 있는 최대 단위( ex. w = 1 , 3)로

나누어 올림 해주었다.

올림 해주는 이유는

빈공간이 있다면 최소한 하나는 해야되고

무조건 다 채워줘야하기때문에 했다.

 

 

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int solution(int n, vector<int> stations, int w)
{
    int answer = 0;

    vector<int> build;
    int last = 1;
    for(int i=0;i<stations.size();i++){
        int pos = stations[i];

        if((pos - w)  - last > 0){
            build.push_back((pos - w)  - last);
        }
        last = pos + w + 1;
    }
    
    if(last <= n){
        build.push_back((n+1) - last);
    }
    
    for(int i=0;i<build.size();i++){
       answer += ceil((double)build[i]/(double)(2*w+1));
    }
    

    return answer;
}
 
 
728x90