๐Ÿ‹ โšพ๏ธ ๐Ÿ’ป ๐ŸŽฌ ๐ŸŽฎ

coding_test

[๋ฐฑ์ค€] 1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน

aeightchill 2025. 5. 5. 17:33
728x90

 

 

๐Ÿ—‚๏ธ   ๋ฌธ์ œ 

1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน



๐Ÿ“Œ   Point

Two Pointers

ํ…Œ์ดํ”„ ์‹œ์ž‘ ์ง€์ ๊ณผ ๋ ์ง€์ ์„ ์ด์šฉํ•ด์„œ ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ’€์ดํ•œ๋‹ค.

 

 

https://youngone-kang.tistory.com/30

 

[Algorithm] Two Pointers (ํˆฌ ํฌ์ธํ„ฐ)

Two Pointers๋ฆฌ์ŠคํŠธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋•Œ ๋‘ ๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์‹œ์ž‘์ ๊ณผ ๋์  2๊ฐœ์˜ ์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. (์‘์šฉ๋ฌธ์ œ) _ ํŠน์ •ํ•œ ํ•ฉ์„ ๊ฐ€

youngone-kang.tistory.com


๐Ÿ“„   ์ฝ”๋“œ

n, l = map(int,input().split())
pipes = list(map(int,input().split()))
pipes.sort()

# ํ…Œ์ดํ”„ ์‹œ์ž‘ ์œ„์น˜
start = pipes[0]-0.5
# ํ…Œ์ดํ”„๊ฐ€ ๋๋‚˜๋Š” ์œ„์น˜
end = start + l
# ์ฒ˜์Œ ์ง€์ ์—์„œ ํ…Œ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต๊ฐ’์€ 1๊ฐœ ์ด์ƒ์ด ๋จ.
ans = 1

for i in range(0, n):
    # ๋ฌผ ์ƒˆ๋Š” ๊ณณ์ด ํ…Œ์ดํ”„ ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ
    if start < pipes[i] < end:
        continue
    # ํ…Œ์ดํ”„๊ฐ€ ๋ฒ—์–ด๋‚œ ์œ„์น˜์— ๋ฌผ์ด ์ƒˆ๋Š” ๊ฒฝ์šฐ
    else:
        ans += 1
        start = pipes[i] - 0.5
        end = start + l

print(ans)

โœ๐Ÿป   ํ’€์ด

์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N)

 

  1. pipe์— ๋ฌผ ์ƒˆ๋Š” ์œ„์น˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ (๋ฌธ์ œ์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ ํ•„์š”)
  2. ํ…Œ์ดํ”„์˜ ์‹œ์ž‘ ์ง€์ ๊ณผ ๋ ์ง€์  ๋ฒ”์œ„๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌผ ์ƒˆ๋Š” ์œ„์น˜๊ฐ€ ์ด ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€ ํ™•์ธ
  3. 2์—์„œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” continue
  4. 2์—์„œ ๋ฒ”์œ„ ๋‚ด์— ์—†๋Š” ๊ฒฝ์šฐ
    • ํ…Œ์ดํ”„ ์ˆ˜๋ฅผ +1 ํ•˜๊ณ  ํ…Œ์ดํ”„ ์‹œ์ž‘, ๋ ์ง€์ ์„ ์žฌ์„ค์ •ํ•œ๋‹ค.

 

 

 

 

 

 

 

 

728x90