728x90
๐๏ธ ๋ฌธ์
๐ 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)
- pipe์ ๋ฌผ ์๋ ์์น๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ (๋ฌธ์ ์์ ์์๋๋ก ์ฃผ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฌ ํ์)
- ํ ์ดํ์ ์์ ์ง์ ๊ณผ ๋ ์ง์ ๋ฒ์๋ฅผ ํ์ฉํด์ ๋ฌผ ์๋ ์์น๊ฐ ์ด ๋ฒ์ ๋ด์ ์๋์ง ํ์ธ
- 2์์ ๋ฒ์ ๋ด์ ์๋ ๊ฒฝ์ฐ์๋ continue
- 2์์ ๋ฒ์ ๋ด์ ์๋ ๊ฒฝ์ฐ
- ํ ์ดํ ์๋ฅผ +1 ํ๊ณ ํ ์ดํ ์์, ๋ ์ง์ ์ ์ฌ์ค์ ํ๋ค.
728x90
'coding_test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2805. ๋๋ฌด ์๋ฅด๊ธฐ (ํ์ด์ฌ) (0) | 2025.04.14 |
---|---|
[๋ฐฑ์ค] 11660. ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (ํ์ด์ฌ) (0) | 2025.04.14 |
[๋ฐฑ์ค] 17270. ์ฐ์์ธ์ ํ๋ค์ด (ํ์ด์ฌ) (0) | 2025.03.27 |
[๋ฐฑ์ค] 17609. ํ๋ฌธ (ํ์ด์ฌ) (0) | 2025.03.25 |
[๋ฐฑ์ค] 11945. ๋จ๊ฑฐ์ด ๋ถ์ด๋นต (ํ์ด์ฌ) (0) | 2025.03.08 |