๐ก solutions
๐ฌ ๋ฌธ์ ์์ ๊ตฌํด์ผ ํ๋ ๋ต์ '์ฆ์ฑํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ'์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ ์ค์น๋ ๊ธฐ์ง๊ตญ์ผ๋ก๋ถํฐ ์ ํ๊ฐ ์ ๋ฌ๋์ง ์๋ ์ํํธ๋ค์ ๋จผ์ ์ฐพ์์ผ ํ๋ค.
๐ฌ ์ค์น๋ ๊ธฐ์ง๊ตญ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ค. start, end๊ฐ์ ๊ฐฑ์ ํ๋ฉฐ ์ ํ๊ฐ ์ ๋ฌ๋์ง ์๋ ์ํํธ์ ๊ฐ์(before)๋ฅผ ๊ตฌ๊ฐ๋ณ๋ก ์ฐพ๋๋ค.
๐ฌ spread๋ ๊ธฐ์ง๊ตญ ํ๋๋ฅผ ์ค์นํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ํ๋ฅผ ์ ๋ฌ ๋ฐ๋ ์ํํธ์ ๊ฐ์์ด๋ค. (๊ธฐ์ง๊ตญ์ ์์น ๋ํ ํฌํจ) ์๋ฅผ ๋ค์ด w๊ฐ 2์ด๋ฉด ์ด 5๊ฐ์ ์ํํธ๊ฐ ์ ํ๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์๋ค.
๐ฌ ํ ๊ตฌ๊ฐ์์ ์ ํ๊ฐ ์ ๋ฌ๋์ง ์์ ์ํํธ๋ค์ ๊ฐ์๋ฅผ spread๋ก ๋๋ ๋ชซ์ ์ฌ๋ฆผํ ๊ฐ์ด ๋ฐ๋ก ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ด๋ค. ๋ชจ๋ ๊ตฌ๊ฐ์ ํ์ํ์ฌ ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ์๋ฅผ ๊ตฌํ๋ค.
๐ฌ while๋ฌธ์ด ์ข ๋ฃ๋ ํ ํ ์คํธ ์ผ์ด์ค 2๋ฒ ์ฒ๋ผ ๋ง์ง๋ง ์ํํธ๊น์ง ํ์ํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ, ๋ง์ง๋ง ๋จ์ ์ํํธ๋ค์ ๊ฐ์๋ฅผ ๋ค์ spread๋ก ๋๋ ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ์๋ฅผ ์ถ๊ฐ๋ก ๊ตฌํ๋ค.
๐จ๐ป code
from collections import deque
import math
def solution(n, stations, w):
stations = deque(stations)
base_station = 0
start = 1
while stations:
current = stations.popleft()
end = current - w
if start < end:
spread = w * 2 + 1
before = end - start
base_station += math.ceil(before / spread)
# ์์์ ๊ฐฑ์
start = current + w + 1
# ๋๊น์ง ํ์์ด ๋์ง ์์ ๊ฒฝ์ฐ
if start <= n:
before = n - (current + w)
spread = w * 2 + 1
base_station += math.ceil(before / spread)
return base_station
๐ problem
N๊ฐ์ ์ํํธ๊ฐ ์ผ๋ ฌ๋ก ์ญ ๋์ด์ ์์ต๋๋ค. ์ด ์ค์์ ์ผ๋ถ ์ํํธ ์ฅ์์๋ 4g ๊ธฐ์ง๊ตญ์ด ์ค์น๋์ด ์์ต๋๋ค. ๊ธฐ์ ์ด ๋ฐ์ ํด 5g ์์๊ฐ ๋์์ ธ 4g ๊ธฐ์ง๊ตญ์ 5g ๊ธฐ์ง๊ตญ์ผ๋ก ๋ฐ๊พธ๋ ค ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ 5g ๊ธฐ์ง๊ตญ์ 4g ๊ธฐ์ง๊ตญ๋ณด๋ค ์ ๋ฌ ๋ฒ์๊ฐ ์ข์, 4g ๊ธฐ์ง๊ตญ์ 5g ๊ธฐ์ง๊ตญ์ผ๋ก ๋ฐ๊พธ๋ฉด ์ด๋ค ์ํํธ์๋ ์ ํ๊ฐ ๋๋ฌํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด 11๊ฐ์ ์ํํธ๊ฐ ์ญ ๋์ด์ ์๊ณ , [4, 11] ๋ฒ์งธ ์ํํธ ์ฅ์์๋ 4g ๊ธฐ์ง๊ตญ์ด ์ค์น๋์ด ์์ต๋๋ค. ๋ง์ฝ ์ด 4g ๊ธฐ์ง๊ตญ์ด ์ ํ ๋๋ฌ ๊ฑฐ๋ฆฌ๊ฐ 1์ธ 5g ๊ธฐ์ง๊ตญ์ผ๋ก ๋ฐ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. (์ ํ์ ๋๋ฌ ๊ฑฐ๋ฆฌ๊ฐ W์ผ ๋, ๊ธฐ์ง๊ตญ์ด ์ค์น๋ ์ํํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํ๋ฅผ ์์ชฝ์ผ๋ก W๋งํผ ์ ๋ฌํ ์ ์์ต๋๋ค.)
- ์ด๊ธฐ์, 1, 2, 6, 7, 8, 9๋ฒ์งธ ์ํํธ์๋ ์ ํ๊ฐ ์ ๋ฌ๋์ง ์์ต๋๋ค.
- 1, 7, 9๋ฒ์งธ ์ํํธ ์ฅ์์ ๊ธฐ์ง๊ตญ์ ์ค์นํ ๊ฒฝ์ฐ, ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
- 3๊ฐ์ ์ํํธ๋ณด๋ค ๋ ๋ง์ ์ํํธ ์ฅ์์ ๊ธฐ์ง๊ตญ์ ์ค์นํ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
์ด๋, ์ฐ๋ฆฌ๋ ๊ธฐ์ง๊ตญ์ ์ต์๋ก ์ค์นํ๋ฉด์ ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ๋ ค๊ณ ํฉ๋๋ค. ์์ ์์์์ ์ต์ 3๊ฐ์ ์ํํธ ์ฅ์์ ๊ธฐ์ง๊ตญ์ ์ค์นํด์ผ ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
์ํํธ์ ๊ฐ์ N, ํ์ฌ ๊ธฐ์ง๊ตญ์ด ์ค์น๋ ์ํํธ์ ๋ฒํธ๊ฐ ๋ด๊ธด 1์ฐจ์ ๋ฐฐ์ด stations, ์ ํ์ ๋๋ฌ ๊ฑฐ๋ฆฌ W๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ํํธ์ ์ ํ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฆ์คํด์ผ ํ ๊ธฐ์ง๊ตญ ๊ฐ์์ ์ต์๊ฐ์ ๋ฆฌํดํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์
์ ํ์ฌํญ
- N: 200,000,000 ์ดํ์ ์์ฐ์
- stations์ ํฌ๊ธฐ: 10,000 ์ดํ์ ์์ฐ์
- stations๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์๊ณ , ๋ฐฐ์ด์ ๋ด๊ธด ์๋ N๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ ์์ฐ์์ ๋๋ค.
- W: 10,000 ์ดํ์ ์์ฐ์