programmers.co.kr/learn/courses/30/lessons/12979
ceil์ด ์๊ฐ์ ๋ง์ด ์ก์๋จน๋๋ค๋ ๊ธ์ ๋ด์ ๊ทธ๊ฑธ ๊ณ ์ณ์ฃผ์์ผ๋...! ์ญ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
์คํจํ ์ฝ๋ (์๊ฐ์ด๊ณผ) → ์ ํ๊ฐ ๋ฟ์ง์๋ ์ํํธ๋ฅผ ํ๋ํ๋ ๋ฐฐ์ด์ ์ถ๊ฐํด์ค ๊ฒ์ด ๋ฌธ์ ์๋ค!
๋๋ณด๊ธฐ
def solution(n, stations, w):
answer = 0
apts = [0] * (n+1)
for s in stations:
# print(s)
tmpStart = s-w
tmpEnd = s+w
if tmpStart < 1:
tmpStart = 1
if tmpEnd > n:
tmpEnd = n
for i in range(tmpStart, tmpEnd+1):
apts[i] = 1 #์ ํ ๋ฟ๋๊ณณ์ 1๋ก ํ์
# print(apts)
oneRange = 1 + (w * 2) #ํ๋์ ๊ธฐ์ง๊ตญ์ด ๋ฟ๋ ๋ฒ์, w๊ฐ ์์ฐ์์ด๋ฏ๋ก ์ต์ 3
aptCnt = 0
for i in range(1, n):
if apts[i] == 0:
aptCnt += 1
if apts[i+1] == 1 or i+1 == n:
answer += aptCnt // oneRange
if aptCnt % oneRange != 0:
answer += 1
aptCnt = 0
return answer
๊ทธ๋์ ์ด๋ฅผ ์ด์ฉ๋ค ํ๊ณ ๊ฒ์์ ํด๋ณด๋ ์ ๋ ๊ฒ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ง ์๊ณ , ์ ํ๊ฐ ๋ฟ์ง์๋ ๊ฑฐ๋ฆฌ๋ง ๊ณ์ฐํด์ ํ์ ๋ถ์ด ๊ณ์ ์ ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ ํ์ด๋ดค๋ค.
๐โ๏ธ์์ฑํ ์ฝ๋
๋๋ณด๊ธฐ
import math
def solution(n, stations, w):
answer = 0
noStations = [] #ํต์ ์ด ์๋๋ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฃ๋ ๋ฆฌ์คํธ
noStart = 1 #์ ํ๊ฐ ๋ฟ์ง์๋ ์์์
for s in stations:
sStart = s - w #์ ํ๊ฐ ๋ฟ๋ ์์์
sEnd = s + w #์ ํ๊ฐ ๋ฟ๋ ๋์
if sStart - noStart > 0:
noStations.append(sStart - noStart)
noStart = sEnd + 1
if noStart <= n:
noStations.append(n+1 - noStart)
# print(noStations)
oneRange = 1 + (2 * w)
for ns in noStations:
answer += math.ceil(ns/oneRange)
return answer
'๐๊ณต๋ถ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1647๋ฒ : ๋์ ๋ถํ ๊ณํ (0) | 2021.09.25 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ (0) | 2021.05.18 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ์ซ์ ๊ฒ์ (0) | 2021.04.27 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv.3] ํ์ ํฐํธ๋ฆฌ๊ธฐ (0) | 2021.04.20 |
[๋ฐฑ์ค] 14889๋ฒ ์คํํธ์ ๋งํฌ (0) | 2021.01.07 |
๋๊ธ