-
Programmers [기지국 설치]공부/programmers 문제 2019. 10. 1. 11:32
#include <iostream> #include <vector> using namespace std; int solution(int n, vector<int> stations, int w) { int head = 0, tail = 0, answer = 0; int cur, val; for (int i = 0; i < stations.size(); i++) { cur = stations[i]; tail = cur - w - 1; if (tail>=head && tail!=0) { val = tail - head + 1; if ((val % (2 * w + 1)) == 0) val = (val / (2 * w + 1)); else val = (val / (2 * w + 1)) + 1; answer += val; } head = cur + w + 1; if (head > n) break; } if (head <= n) { tail = n; val = tail - head + 1; if ((val % (2 * w + 1)) == 0) val = (val / (2 * w + 1)); else val = (val / (2 * w + 1)) + 1; answer += val; } return answer; } int main() { int n =7; vector<int> stations = {2,5}; int w =1; solution(n, stations, w); return 0; }
사실 이 문제는 생각 없이 배열 탐색을 통한 구현을 했는데(문제의 input범위가 n의 범위가 2억, stations의 범위가 10000이었다....)
귀신같이 시간초과가나서 다시 구현했다.
그래도 배열탐색으로 구현한 코드를 저장해둘걸... 아쉬움이 남는다.
'공부 > programmers 문제' 카테고리의 다른 글
Programmers [2 x N 타일링] (0) 2019.10.01 Programmers [섬 연결하기] - 분명 Prim's algorithm...? 을 짰는데.. (0) 2019.10.01