๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ Algorithm/๊ตฌํ˜„

[LeetCode] 876๋ฒˆ: ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

by HelloRabbit 2023. 3. 11.
728x90

Goal

1. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ดํ•ดํ•˜๊ธฐ
2. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ

 

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)๋ž€?

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํ•ญ๋ชฉ๋“ค์ด ๊ทธ ๋‹ค์Œ ์ˆœ์„œ๋กœ ์˜ค๋Š” ํ•ญ๋ชฉ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (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

 

 

 

 

๋Œ“๊ธ€