728x90
Hint
1. ์ด๋ป๊ฒ ํ๋ฉด ํฌ์ธํฐ 2๊ฐ๋ฅผ ์ด์ฉํด์ ๊ธฐ์กด ๋ฆฌ์คํธ๋ฅผ ์ํ๋ ๊ฒฐ๊ณผ๋ก ์์ ํ ์ ์์๊น?
2. ํฌ์ธํฐ 1๊ฐ๋ ์์ ํ๋ ๋ ธ๋ ์์น์ (a), ๋ค๋ฅธ ํ๋๋ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ํ์ธํ๋ ์ฉ๋(b)๋ก ์ด์ฉํด๋ณด์!
3. ์์ง์ด๋ ํฌ์ธํฐb๊ฐ ๊ทธ ๋ค์ 0์ ๋๋ฌํ ๋๊น์ง ์ซ์๋ค์ ์์ ํ๋ ํฌ์ธํฐa ์์น์ ๋ํ๋ฉด ๋๋ค.
4. ๋ง์ง๋ง ๋ ธ๋๋ null์ ์ฐ๊ฒฐ๋๋๋ก ๋ฐ๊ฟ์ผํ๋ค.
LeetCode 2181๋ฒ: Merge Nodes in Between Zeros (ํ์ด๋ณด๊ธฐ)
class Solution:
def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
# ํฌ์ธํฐ 2๊ฐ ๋ง๋ค๊ธฐ
# now = ๋ง์
ํ ํฌ์ธํฐ ์์น
# pointer = ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ํ์ธํ ํฌ์ธํฐ ์์น
now = pointer = head
# pointer๋ก ๋ฆฌ์คํธ ์ ์ฒด ํ์ธํ๊ธฐ
while pointer.next:
pointer = pointer.next
# 0์ด ์๋ ์ซ์๋ฉด now ์์น์ ์ซ์๋ฅผ ๋ํด์ฃผ๊ธฐ
if pointer.val != 0:
now.val += pointer.val
# 0์ด๋ฉด now ์์น ์ฎ๊ฒจ์ฃผ๊ธฐ
else:
if pointer.next:
now = now.next
now.val = 0
# pointer๊ฐ ๋ฆฌ์คํธ ๋์ ๋๋ฌํ๋ค๋ฉด now์ ๋ค์ ๋
ธ๋๋ฅผ None์ผ๋ก ํด์ฃผ์ด ๋๋จธ์ง ๋ฆฌ์คํธ ๋์ด๋ด๊ธฐ
else:
now.next = None
# now ํฌ์ธํฐ๋ก ๋ณ๊ฒฝํ head ๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๊ธฐ
return head
'๐งฉ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 1828๋ฒ: ์ ์์ ์ ๊ฐ์ (0) | 2023.04.28 |
---|---|
[LeetCode] 876๋ฒ: ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2023.03.11 |
[๋ฐฑ์ค] 10808๋ฒ: ์ํ๋ฒณ ๊ฐ์ (0) | 2023.03.06 |
[๋ฐฑ์ค] 1929๋ฒ: ์์ ๊ตฌํ๊ธฐ (0) | 2023.02.18 |
์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2023.02.13 |
๋๊ธ