๐
ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ ์ธํฐ๋ทฐ
์ฑ ์ ์ฐธ๊ณ ํ์ต๋๋ค.
์ฐ๊ฒฐ๋ ๋ชฉ๋ก์ด ์ฃผ์ด์ง๋ฉด ์ธ์ ํ ๋ ๋ ธ๋๋ฅผ ๋ชจ๋ ๊ต์ฒดํ๊ณ ํค๋๋ฅผ ๋ฐํํฉ๋๋ค.
์ฐจ๋ถํ ์๋ ์ธ์ ํ๋ ๋
ธ๋๋ผ๋ฆฌ์ ์ฐ๊ฒฐ ๋์ ์๋ก์ด ์ฐ๊ฒฐ์ ํด์ค์ผํ๋ค.
1. root์ prev์ ์์์ง์ ์ ์์ฑํ๋ค. [ListNode(None)]
2. ์ธ์ ํ ๋ ๋
ธ๋๋ฅผ ์ค์ํ๋ฏ๋ก ์ต์ํ ํ์ฌ๋
ธ๋์ ๋ค์๋
ธ๋๊ฐ ์กด์ฌํด์ผ๋ง ํ๋ค.
3. ๋๋ฒ์งธ ๋
ธ๋.next(์ธ๋ฒ์งธ๋
ธ๋)๋ฅผ ์ฒซ๋ฒ์งธ๋
ธ๋.next๊ฐ ๊ฐ๋ฅดํค๊ฒ ํ๋ค.
4. ๊ทธ๋ฆฌ๊ณ ๋๋ฒ์งธ ๋
ธ๋.next๋ ์ฒซ๋ฒ์งธ๋
ธ๋๋ฅผ ๊ฐ๋ฅดํค๊ฒ ๋์ด ๋ ๋
ธ๋์ ์์น๊ฐ ๋ฐ๋๋ค.
5. ์ด์ ๋จ์ ์ฒซ๋ฒ์งธ ๋
ธ๋ ์์ ์๋ ๋
ธ๋๊ฐ ์๋ ๋๋ฒ์งธ๋
ธ๋ ์๋ ๊ฒ์ ๊ฐ๋ฅดํค๊ฒ ๋ง๋ ๋ค.
๋ชจ๋ ์๋ฃํ๋ฉด ๋ ๋ ธ๋๊ฐ ์ค์์ด ๋๋ค.
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
root = prev = ListNode(None)
prev.next = head
while head and head.next:
b = head.next
head.next = b.next
b.next = head
prev.next = b
head = head.next
prev = prev.next.next
return root.next