작성
·
153
1
안녕하세요.
항상 선생님 강의 잘 듣고 있습니다.
이번 문제에서 핵심인
---
next = current.next; // 2를 저장해두고
current.next = prev; // 1.next 는 null로 설정하고
prev = current; // prev는 1로 설정하고
current = next; // current값을 2로 재설정
--
이부분에 대해서는 어느정도 이해가 된 것 같은데, 정말 기본적인것이 갑자기 궁금해져서 문의를 남기게 되었습니다..
마지막 return 을 prev값을 해주고 있는데, 어떻게 3,2,1이라는 값이 도출되는지 궁금해졌어요.
.next란 방식으로 할당해주지도 않아서 , prev = current하면 마지막에 return은 '3'만 되지 않을까 걱정했는데 3,2,1이라는 값이 reverse되어서 나오더라구요...
제가 어느부분을 놓친 것인지 잘 감이 오질 않습니다ㅠㅠ
조언 부탁드립니다!
감사합니다
답변 3
2
이문제는 ListNode에서 next의 개념을 물어보는 가장 기본문제입니다.
이거 응용되서 여러 개념에서 물어봅니다. 가장 이해를 잘해야 될 문제이죠
이문제의 핵심은
1N-2N-3NULL이
3N-2N-1NULL 이 되게하는 것입니다.
1) Next= cur.next;
2) cur.next = Prev;
3) Prev= cur;
4) cur= Next
1,4번라인은 포인터만 한칸뒤로 가는 부분이고요
2,3번라인이 핵심입니다.
N이 Next, X가 널이라고 하면
1. 첫번째 수행시
2N-3X = 2N-3X
1X=X
1X=1X
2N-3X = 2N-3X
=================
2. 두번째 수행시
3X = 3X
2N-1X=1X
2N-1X=2N-1X
3X = 3X
=================
3. 두번째 수행시
X = X
3N-2N-1X = 2N-1X
3N-2N-1X = 3N-2N-1X
X = X
이렇게 수행됩니다. 이 그림을 계속 반복해서 보시면 이해가 되실겁니다.
질문주신내용
=============================
마지막 return 을 prev값을 해주고 있는데, 어떻게 3,2,1이라는 값이 도출되는지 궁금해졌어요.
.next란 방식으로 할당해주지도 않아서 , prev = current하면 마지막에 return은 '3'만 되지 않을까 걱정했는데 3,2,1이라는 값이 reverse되어서 나오더라구요...
================================
cur.next = Prev;
=>cur.next에 이부분에 계속해서 Prev를 넣습니다.
Prev = cur;
=> 현재의 cur의 모든 정보를 Prev가 그대로 갖게됩니다.
1
ㅎㅎ 핵심 질문을 하셨네요
이 문제는 정말 중요한 문제입니다 listNode next 개념인데요 이거 완전히 이해할수 있도록 동영상을 보충하거나 오늘밤에 글을쓰겠습니다 완전히 이해할때까지 제가 알려드릴게요
0