Solution
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
# 2๊ฐ์ ๋งํฌ๋๋ฆฌ์คํธ ๊ต์ฐจํ๋ ๋ถ๋ถ ์ฐพ๊ธฐ
# ๋ง์ฝ, ๊ต์ฐจํ๋ ๋ถ๋ถ ์์ผ๋ฉด 0 ๋ฆฌํด
def getIntersectionNode(self, headA, headB):
# ๊ต์ฐจ๋๋ ๋ถ๋ถ ์์ผ๋ฏ๋ก 0 ๋ฆฌํด
if headA is None or headB is None:
return None
# ํ์ฌ A, B๊ฐ ๊ณ์ ๋ฐ๋ ๊ฒ์ด๋ฏ๋ก ๋ณ์ ์ง์
currentA = headA
currentB = headB
# ํ์ฌ์ A์ B๊ฐ ๋ค๋ฅผ ๋ ๊ณ์ ๋ฐ๋ณต๋ฌธ ๋์์ฃผ๊ธฐ
while currentA != currentB:
# ํ์ฌ A๊ฐ ์์ผ๋ฉด ๋ค์์ผ๋ก ๊ฐ๊ณ
if currentA:
currentA = currentA.next
# A๊ฐ ์์ผ๋ฉด B๋ก ๊ฐ
else:
currentA = headB
# B๋ ์์ ๋๊ฐ์ด ์งํ
if currentB:
currentB = currentB.next
else:
currentB = headA
# ๊ฒฐ๋ก ์ A์ B๊ฐ ๊ฐ์ ์ง์ ์์ ๋ง๋ ๋ ๋ฐ๋ณต๋ฌธ์ด ๋น ์ ธ๋์ค๋๋ก ํ๋ค.
# ์ง์ ์์ ๋ฅผ ๊ฐ์ง๊ณ ๋
ธ๋์ ํ๋์ฉ ์ด๋์์ผ๋ณด๋ฉด ์ดํดํ ์ ์๋ค.
# "else"์์์ ๋ก์ง์ด ํต์ฌ ๋ก์ง -> A๋ B๊ฐ null์ด ๋๋ฉด ๊ทธ ์๋ node๋ก ์ด๋ํ๋ค๋ ๋ป
# ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฒฐ๊ตญ ๋ง๋ฌผ๋ฆฌ๋ ์ง์ ์ด ์๊ธฐ๊ฒ ๋จ
return currentA
Leave a comment