728x90
Goal
1. ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ดํดํ๊ธฐ
2. ๊ฐ์ฅ ๊ฐ๋จํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ณด๊ธฐ
์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)๋?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฆฌ์คํธ ์์ ์๋ ํญ๋ชฉ๋ค์ด ๊ทธ ๋ค์ ์์๋ก ์ค๋ ํญ๋ชฉ๊ณผ ์ฐ๊ฒฐ๋์ด ์ ํด์ง ์์๋ก ๋ฌถ์ฌ ์๋ ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
LeetCode 876๋ฒ: Middle of the Linked List (ํ์ด๋ณด๊ธฐ)
Hint
1. head๋ผ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌ์กฐ์ ์ ์ :
head.val = ํ์ฌ ์์น์ ์
head.next= ๋ค์ ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ
2. ์ด ๊ฐ์๊ฐ 1๊ฐ์ผ ๋๋ ํ์ฌ ์์น์ ์ค๊ฐ ์ง์ ์ ์์น๊ฐ ๊ฐ๋ค
3. ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ์ ๊ฐ์๊ฐ ํ๋์ฉ ๋์ด๋ ๋๋ง๋ค ํ์ฌ ์์น์ ์ค๊ฐ ์ง์ ์ ์์น๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง ์๊ฐํด๋ณด์
4. ์ด ๊ฐ์๊ฐ ํ์์ผ ๋์ ์ง์์ผ ๋ ํ์ฌ ์์น์ ์ค๊ฐ ์ง์ ์ ์์น๊ฐ ์ด๋ป๊ฒ ์ฎ๊ฒจ์ง๋์ง ์๊ฐํด๋ณด์
5. ์ง์์ผ ๋๋ ํฌ์ธํฐ๊ฐ ๊ฐ์ด ํ์นธ์ฉ ์์ง์ด๊ณ , ํ์์ผ ๋๋ ํ์ฌ ํฌ์ธํฐ ์์น๋ง ํ์นธ ์์ง์ธ๋ค
Solution
class Solution:
def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
even = False # ํ์ฌ ์ด ๊ฐ์๊ฐ ์ง์์ธ์ง ํ์ธ
now = middle = head # ํ์ฌ ์์น๋ฅผ ์๋ ค์ฃผ๋ ํฌ์ธํฐ์ ์ค๊ฐ ์ง์ ์ ์๋ ค์ฃผ๋ ํฌ์ธํฐ๋ฅผ ์ ์
# ๊ทธ ๋ค์ ์์๋ก ์ค๋ ๋ฆฌ์คํธ๊ฐ ์๋ ๋์์ ๋ฐ๋ณต๋๋ ์ฝ๋
while now.next:
even = not even # ์ง์์์ผ๋ฉด ๊ทธ ๋ค์์ ํ์, ํ์์์ผ๋ฉด ๊ทธ ๋ค์์ ์ง์๊ฐ ๋๋ค
now = now.next # ํ์ฌ ์์น๋ฅผ ๊ทธ ๋ค์ ๋ฆฌ์คํธ๋ก ํฌ์ธํฐ๋ฅผ ์ฎ๊ฒจ์ค๋ค
# ์ด ๊ฐ์๊ฐ ์ง์๋ผ๋ฉด ์ค๊ฐ ์ง์ ํฌ์ธํฐ๋ฅผ ํ์นธ ์ฎ๊ฒจ์ค๋ค
if even:
middle = middle.next
# ์ค๊ฐ ์ง์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฅดํค๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ค
return middle
'๐งฉ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 2181๋ฒ: ๊ธฐ์กด ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์์ ํ๊ธฐ (0) | 2023.04.30 |
---|---|
[LeetCode] 1828๋ฒ: ์ ์์ ์ ๊ฐ์ (0) | 2023.04.28 |
[๋ฐฑ์ค] 10808๋ฒ: ์ํ๋ฒณ ๊ฐ์ (0) | 2023.03.06 |
[๋ฐฑ์ค] 1929๋ฒ: ์์ ๊ตฌํ๊ธฐ (0) | 2023.02.18 |
์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2023.02.13 |
๋๊ธ