[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ์ง€๊ตญ ์„ค์น˜ / level 3 / ํŒŒ์ด์ฌ / python
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ์ง€๊ตญ ์„ค์น˜ / level 3 / ํŒŒ์ด์ฌ / python

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ’ก 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 ๊ธฐ์ง€๊ตญ์œผ๋กœ ๋ฐ”๊พธ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 5

programmers.co.kr


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 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜



๋ฐ˜์‘ํ˜•