プログラマSummer/Winter Coding(~2018)-基地局のインストール
問題の説明
N個のマンションが一列に並んでいる.一部のマンションの屋上には4 g基地局が設置されている.技術の発展に伴い、5 gに対する需要はますます高くなり、4 g基地局を5 g基地局に変えたいと思っています.しかし、5 g基地局は4 g基地局より転送範囲が小さく、4 g基地局が5 g基地局に変更されると、一部のマンションでは電波が届かない.
例えば、11棟のマンションがずらりと並び、[4,11]2棟目のマンションの屋上には4 gの基地局が設置されている.この4 g基地局が電波到達距離を1人5 g基地局に変更すると、全てのマンションに電波を送ることができない.(伝播距離がWの場合、基地局のあるマンションから両側に伝播距離を伝播することができる.)
初期には、1,2,6,7,8,9号マンションでは電波が伝播しなかった.
1、7、9棟目のマンションの屋上に基地局を設置すれば、全てのマンションに電波を送ることができる.
3つのマンションよりも多くの屋上に基地局を設置すれば、すべてのマンションに電波を送ることもできる.
マンションの個数Nは、現在基地局のマンションの番号が設定されている1次元配列局であり、電波の到達距離Wをパラメータとした場合、全てのマンションに電波を伝達するために増設する基地局個数の最大値のコールバック関数を完了してください.
せいげんじょうけん
N:2億2000万以下の自然数
サイトサイズ:10,000以下の自然数
サイトは昇順に並べられ、配列の数はNの自然数に等しいか、または小さい.
W:1000以下の自然数
プール(非効率) from math import ceil
def solution(n, stations, w):
answer = 0
apartments = [0 for _ in range(n)]
for s in stations:
for i in range((s-1)-w, s+w):
if i >= 0 and i < n:
apartments[i] = 1
cnt = 0
for i in apartments:
if i == 0:
cnt += 1
else:
answer += ceil(cnt / (1+2*w))
cnt = 0
answer += ceil(cnt / (1+2*w))
return answer
from math import ceil
def solution(n, stations, w):
answer = 0
apartments = [0 for _ in range(n)]
for s in stations:
for i in range((s-1)-w, s+w):
if i >= 0 and i < n:
apartments[i] = 1
cnt = 0
for i in apartments:
if i == 0:
cnt += 1
else:
answer += ceil(cnt / (1+2*w))
cnt = 0
answer += ceil(cnt / (1+2*w))
return answer
各セグメント
そうすると、テストは合格しますが、効率的にすべてタイムアウト・・
別の解釈 from math import ceil
def solution(n, stations, w):
answer = 0
start = 0
for s in stations:
left = (s-1)-w # 전파 범위중 가장 왼쪽을 left라고 함
# left - start는 전파 범위에 안들어 가는 구간이고 1+2*w는 송신탑 하나의 최대범위임
answer += ceil((left - start) / (1+2*w))
start = s+w
answer += ceil((n - start) / (1+2*w)) # 마지막 스타트에서 끝까지 구간
return answer
from math import ceil
def solution(n, stations, w):
answer = 0
start = 0
for s in stations:
left = (s-1)-w # 전파 범위중 가장 왼쪽을 left라고 함
# left - start는 전파 범위에 안들어 가는 구간이고 1+2*w는 송신탑 하나의 최대범위임
answer += ceil((left - start) / (1+2*w))
start = s+w
answer += ceil((n - start) / (1+2*w)) # 마지막 스타트에서 끝까지 구간
return answer
Reference
この問題について(プログラマSummer/Winter Coding(~2018)-基地局のインストール), 我々は、より多くの情報をここで見つけました https://velog.io/@whanhee97/프로그래머스-SummerWinter-Coding2018-기지국-설치テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol